Получить группы из 4 элементов из списка значений значений, используя 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.
Ответы
Ответ 1
Это будет группироваться по 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);
Ответ 2
В рамки ничего не встроено, чтобы сделать это легко, но MoreLINQ имеет Batch метод:
IEnumerable<IEnumerable<DataItem>> groups = source.Batch(4);
foreach (IEnumerable<DataItem> group in groups)
{
foreach (DataItem item in group)
{
...
}
}
Ответ 3
Я думаю, что вы ищете GroupBy.