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
{
/// <summary>
/// 复制序列中的数据
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="iEnumberable">原数据</param>
/// <param name="startIndex">原数据开始复制的起始位置</param>
/// <param name="length">需要复制的数据长度</param>
/// <returns></returns>
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;
}
/// <summary>
/// 给IEnumerable拓展ForEach方法
/// </summary>
/// <typeparam name="T">模型类</typeparam>
/// <param name="iEnumberable">数据源</param>
/// <param name="func">方法</param>
public static void ForEach<T>(this IEnumerable<T> iEnumberable, Action<T> func)
{
foreach (var item in iEnumberable)
{
func(item);
}
}
/// <summary>
/// 给IEnumerable拓展ForEach方法
/// </summary>
/// <typeparam name="T">模型类</typeparam>
/// <param name="iEnumberable">数据源</param>
/// <param name="func">方法</param>
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);
}
}
/// <summary>
/// IEnumerable转换为List'T'
/// </summary>
/// <typeparam name="T">参数</typeparam>
/// <param name="source">数据源</param>
/// <returns></returns>
public static List<T> CastToList<T>(this IEnumerable source)
{
return new List<T>(source.Cast<T>());
}
/// <summary>
/// 将IEnumerable'T'转为对应的DataTable
/// </summary>
/// <typeparam name="T">数据模型</typeparam>
/// <param name="iEnumberable">数据源</param>
/// <returns>DataTable</returns>
public static DataTable ToDataTable<T>(this IEnumerable<T> iEnumberable)
{
return iEnumberable.ToJson().ToDataTable();
}
/// <summary>
/// 获取分页数据(包括总数量)
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="iEnumberable">数据源</param>
/// <param name="pageInput">分页参数</param>
/// <returns></returns>
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 };
}
/// <summary>
/// 获取分页数据(仅获取列表,不获取总数量)
/// </summary>
/// <typeparam name="T">泛型</typeparam>
/// <param name="iEnumberable">数据源</param>
/// <param name="pageInput">分页参数</param>
/// <returns></returns>
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;
}
}
}
(精华)2020年6月26日 C#类库 IEnumerable(扩展方法)
猜你喜欢
转载自blog.csdn.net/aa2528877987/article/details/106972077
今日推荐
周排行