Задать вопрос

Как на C# (Linq) разбить список на группы по несколько элементов?

Есть список из 9 элементов, нужно разбить его на список из 3 подсписков содержащих по 3 элемента. Как можно это сделать изящно, чтобы потом можно было перебрать его вложенными циклами foreach для последующего вывода?
var a = new string[] {
	"item 1",
	"item 2",
	"item 3",
	"item 4",
	"item 5",
	"item 6",
	"item 7",
	"item 8",
	"item 9",
};
var q = from a...;
foreach(var a1 in q.Items)
{
	foreach (var a2 in a1.Items)
	{
	}
}
  • Вопрос задан
  • 4668 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Zarinov
@Zarinov Автор вопроса
Правильно сформулированный вопрос — половина решения.
Нашел сам, всем спасибо ;)
public static IEnumerable<IEnumerable<T>> Split<T>(
	this IEnumerable<T> source,
	int count)
{
	return source
		.Select((x, y) => new { Index = y, Value = x })
		.GroupBy(x => x.Index / count)
		.Select(x => x.Select(y => y.Value).ToList())
		.ToList();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы