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