2013-06-10 5 views
0

У меня есть целочисленный список, содержащий около 60-70 элементов. Как я могу получить списки, содержащие 10 целых элементов, используя linq? Если есть 68 элементов, функция должна возвращать 6 списков, содержащих 10 элементов и 1 список, содержащий 8 элементов.Список групп по номеру элемента

+2

Вы пробовали решить это самостоятельно? – Corak

ответ

0
int i = 0; 
return items.GroupBy(x => i++ % 10); 
+1

Вы не должны полагаться на эту лямбду, которая вызывается только один раз за элемент. – user7116

+0

Во-первых, заказ изменен, но это не было одним из требований. Однако для 69 пунктов это даст 5 групп из 10 и 2 групп из 9 объектов, что не соответствует требованиям этого вопроса. –

+0

@sixlettervariables Я никогда не слышал этого возражения раньше, но это хороший момент. @ René Я полагаю, что '' 'необходимо вместо' %'. – Rawling

7

Вы хотите Batch работа MoreLinq:

http://nuget.org/packages/MoreLinq.Source.MoreEnumerable.Batch/

Например:

var batches = myIntegerList.Batch(10); 

foreach (var batch in batches) 
    foreach (int item in batch) 
     // Do something with item 

Если вы на самом деле нужно, чтобы преобразовать последовательности в List<int>:

var batches = myIntegerList.Batch(10, batch => batch.ToList()); 

foreach (var batch in batches) // batch is now a List<int> 
    foreach (int item in batch) 
+0

+1 для того, чтобы не изобретать колесо :) –

Смежные вопросы