有什么方法可以将item用作每个拆分的定界符,将a List<SomeObject>分为几个单独的列表SomeObject?
List<SomeObject>
SomeObject
让我举例说明:
我有一个List<SomeObject>和我需要一个List<List<SomeObject>>或List<SomeObject>[],这样每个结果列表将包含一组3个原始列表(依次)。
List<List<SomeObject>>
List<SomeObject>[]
例如。:
原始清单: [a, g, e, w, p, s, q, f, x, y, i, m, c]
[a, g, e, w, p, s, q, f, x, y, i, m, c]
结果列表: [a, g, e], [w, p, s], [q, f, x], [y, i, m], [c]
[a, g, e], [w, p, s], [q, f, x], [y, i, m], [c]
我还需要将结果列表的大小作为此函数的参数。
请尝试以下代码。
public static IList<IList<T>> Split<T>(IList<T> source) { return source .Select((x, i) => new { Index = i, Value = x }) .GroupBy(x => x.Index / 3) .Select(x => x.Select(v => v.Value).ToList()) .ToList(); }
想法是首先按索引对元素进行分组。除以三有其分组为3.组,那么每组转换到一个列表的效果和IEnumerable的List到List的List小号
IEnumerable
List