一尘不染

使用LINQ将列表拆分为子列表

c#

有什么方法可以将item用作每个拆分的定界符,将a List<SomeObject>分为几个单独的列表SomeObject

让我举例说明:

我有一个List<SomeObject>和我需要一个List<List<SomeObject>>List<SomeObject>[],这样每个结果列表将包含一组3个原始列表(依次)。

例如。:

  • 原始清单: [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]

我还需要将结果列表的大小作为此函数的参数。


阅读 280

收藏
2020-05-19

共1个答案

一尘不染

请尝试以下代码。

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.组,那么每组转换到一个列表的效果和IEnumerableListListList小号

2020-05-19