using System; using System.Linq; namespace System.Collections.Generic { public static class LinqExtensions { public static void ForEach<T>(this IEnumerable<T> array, Action<T> action) { foreach (T item in array) { if (action != null) { action(item); } } } public static IEnumerable<T> AsEnumerable<T>(this IEnumerable array) { foreach (var item in array) { if (item is T) { yield return (T)item; } } } /// <summary> /// 对枚举进行分组 /// </summary> public static IEnumerable<T[]> GroupArray<T>(this IEnumerable<T> arr, int count) { List<T> temp = new List<T>(); foreach (T item in arr) { if (temp.Count == count) { yield return temp.ToArray(); temp.Clear(); } temp.Add(item); } if (temp.Count > 0) yield return temp.ToArray(); } public static IEnumerable<T[]> SplitContent<T>(this T[] array, int count) { int page_count = (int)Math.Ceiling((double)array.Length / count); for (int i = 0; i < page_count; i++) { int size = i != page_count - 1 ? count : array.Length - i * count; T[] temp = new T[size]; Array.Copy(array, i * count, temp, 0, size); yield return temp; //yield return array.Skip(i * count).Take(count).ToArray(); } } } }