(精华)2020年6月26日 C#类库 IEnumerable(扩展方法)

using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Linq.Dynamic.Core;

namespace Core.Util
{
    public static partial class Extention
    {
        /// 
        /// 复制序列中的数据
        /// 
        /// 泛型
        /// 原数据
        /// 原数据开始复制的起始位置
        /// 需要复制的数据长度
        /// 
        public static IEnumerable<T> Copy<T>(this IEnumerable<T> iEnumberable, int startIndex, int length)
        {
            var sourceArray = iEnumberable.ToArray();
            T[] newArray = new T[length];
            Array.Copy(sourceArray, startIndex, newArray, 0, length);

            return newArray;
        }

        /// 
        /// 给IEnumerable拓展ForEach方法
        /// 
        /// 模型类
        /// 数据源
        /// 方法
        public static void ForEach<T>(this IEnumerable<T> iEnumberable, Action<T> func)
        {
            foreach (var item in iEnumberable)
            {
                func(item);
            }
        }

        /// 
        /// 给IEnumerable拓展ForEach方法
        /// 
        /// 模型类
        /// 数据源
        /// 方法
        public static void ForEach<T>(this IEnumerable<T> iEnumberable, Action<T, int> func)
        {
            var array = iEnumberable.ToArray();
            for (int i = 0; i < array.Count(); i++)
            {
                func(array[i], i);
            }
        }

        /// 
        /// IEnumerable转换为List'T'
        /// 
        /// 参数
        /// 数据源
        /// 
        public static List<T> CastToList<T>(this IEnumerable source)
        {
            return new List<T>(source.Cast<T>());
        }

        /// 
        /// 将IEnumerable'T'转为对应的DataTable
        /// 
        /// 数据模型
        /// 数据源
        /// DataTable
        public static DataTable ToDataTable<T>(this IEnumerable<T> iEnumberable)
        {
            return iEnumberable.ToJson().ToDataTable();
        }

        /// 
        /// 获取分页数据(包括总数量)
        /// 
        /// 泛型
        /// 数据源
        /// 分页参数
        /// 
        public static PageResult<T> GetPageResult<T>(this IEnumerable<T> iEnumberable, PageInput pageInput)
        {
            int count = iEnumberable.Count();

            var list = iEnumberable.AsQueryable()
                .OrderBy($@"{pageInput.SortField} {pageInput.SortType}")
                .Skip((pageInput.PageIndex - 1) * pageInput.PageRows)
                .Take(pageInput.PageRows)
                .ToList();

            return new PageResult<T> { Data = list, Total = count };
        }

        /// 
        /// 获取分页数据(仅获取列表,不获取总数量)
        /// 
        /// 泛型
        /// 数据源
        /// 分页参数
        /// 
        public static List<T> GetPageList<T>(this IEnumerable<T> iEnumberable, PageInput pageInput)
        {
            var list = iEnumberable.AsQueryable()
                .OrderBy($@"{pageInput.SortField} {pageInput.SortType}")
                .Skip((pageInput.PageIndex - 1) * pageInput.PageRows)
                .Take(pageInput.PageRows)
                .ToList();

            return list;
        }
    }
}

你可能感兴趣的:(#,C#类库/扩展方法)