Ответ 1
var q = Enumerable.Range(0, 100).GroupBy(x => x/3);
Я что-то пропустил?
Я не могу найти способ сделать эту работу и надеяться, что у кого-то есть идея. Упрощенный пример будет иметь список целых чисел 1-100, я хочу сгруппировать каждые 3 строки, чтобы результат был 1,2,3 в первой группе, а затем 4,5,6 в следующей группе и т.д. Я знаю, как получить каждую n-ю запись, но мне нужны все записи, поэтому я могу их агрегировать, используя первую, последнюю, сумму, макс и т.д.
Спасибо!
var q = Enumerable.Range(0, 100).GroupBy(x => x/3);
Я что-то пропустил?
Этот пример должен работать для запроса нечисловых коллекций. Он проектирует индекс в объект, который должен быть сгруппирован, а затем удаляет его снова во время группировки.
var studentQuery2 = students
.Select((student, index) => new {student, index})
.GroupBy(g => g.index / 3, i => i.student);
Как насчет более простого подхода:
var index = 0;
var grpOf3s = students.GroupBy(x => index++ / 3);
Update:
Если вы используете значение Key
для элемента группы, вам нужно будет преобразовать группу, перечислимую в список. В противном случае вы будете получать разные Key
при каждом доступе.
var index = 0;
var grpOf3s = students.GroupBy(x => index++ / 3).ToList();