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

我想循环遍历这个名称值对列表,并以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。

这将按每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); 

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

 IEnumerable> groups = source.Batch(4); foreach (IEnumerable group in groups) { foreach (DataItem item in group) { ... } } 

我想你正在寻找GroupBy 。