使用C#中的LINQ从名称值列表中获取4个元素的组

时间:2010-04-21 20:56:10

标签: c# linq

我想循环遍历这个名称值对列表,并以4个为一组抓取它们。

数据如下:

value1 1
value2 1
value3 1
value4 1
value1 2
value2 2
value3 2
value4 2

并将其分组为包含

的1个列表
value1 1
value2 1
value3 1
value4 1

和另一个包含

的列表
value1 2
value2 2
value3 2
value4 2

我知道这可以通过for循环轻松完成,但我想知道是否有一个很好的方法来使用LINQ。

3 个答案:

答案 0 :(得分:6)

这将按每4项(a,b,c,d),(e,f,g,h),(i,j)分组

var abc = new string[] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" };

var xyz = abc.Select((e, i) => new { Item = e, Grouping = (i / 4) }).GroupBy(e => e.Grouping);

答案 1 :(得分:5)

框架中没有任何内容可以轻松完成此操作,但MoreLINQ具有Batch方法:

IEnumerable<IEnumerable<DataItem>> groups = source.Batch(4);

foreach (IEnumerable<DataItem> group in groups)
{
    foreach (DataItem item in group)
    {
        ...
    }
}

答案 2 :(得分:0)

我认为你正在寻找GroupBy