我现在有一个约190个元素的列表.如何将列表分割成更小的列表,每个列表中最多包含50个元素?
结果可能是50,50,50和40元素的列表.
解决方法
假设您的意思是List< T>,您可以重复使用
GetRange
方法.哎,你可以用LINQ这样做:
var lists = Enumerable.Range(0,(list.Count + size - 1) / size) .Select(index => list.GetRange(index * size,Math.Min(size,list.Count - index * size))) .ToList();
或者你可以使用循环,当然:
public static List<List<T>> Split(List<T> source,int size) { // TODO: Prepopulate with the right capacity List<List<T>> ret = new List<List<T>>(); for (int i = 0; i < source.Count; i += size) { ret.Add(source.GetRange(i,source.Count - i))); } return ret; }
这比使用GroupBy有效得多,尽管它仅限于List< T>作为输入.