使用LINQ将列表<T>分解为n个长度的列表<T>,可以使用以下代码实现:
public static List<List<T>> SplitList<T>(List<T> list, int n)
{
var result = new List<List<T>>();
int count = list.Count;
int quotient = count / n;
int remainder = count % n;
for (int i = 0; i < n; i++)
{
int itemsToTake = quotient + (i< remainder ? 1 : 0);
result.Add(list.Take(itemsToTake).ToList());
list = list.Skip(itemsToTake).ToList();
}
return result;
}
这个方法将一个列表<T>分解为n个长度相等的子列表,如果列表的元素数量不能被n整除,则将多余的元素分配到前面的子列表中。
例如,如果有一个包含10个元素的列表,将其分解为3个长度相等的子列表,将得到以下结果:
这个方法使用了LINQ的Take和Skip方法,它们是LINQ的核心方法之一,用于对序列进行筛选和投影操作。在这个方法中,我们使用了Take方法来获取子列表的前n个元素,然后使用Skip方法来跳过这些元素,以便获取下一个子列表。
这个方法的时间复杂度为O(n),其中n是列表中的元素数量。
领取专属 10元无门槛券
手把手带您无忧上云