Чтобы сгруппировать по 3, используйте этот запрос LINQ:
var data = new[] {"quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog"};
var res = data
.Select((s, i) => new { Link = string.Format("<a>{0}</a>", s), Index = i })
.GroupBy(p => p.Index/3)
.Select(g => string.Format("<div>{0}</div>", string.Join("", g.Select(v => v.Link))));
foreach (var re in res) {
Console.WriteLine(re);
}
Вывод этой программы выглядит следующим образом:
<div><a>quick</a><a>brown</a><a>fox</a></div>
<div><a>jumps</a><a>over</a><a>the</a></div>
<div><a>lazy</a><a>dog</a></div>
Обратите внимание, как этот код использует string.Join
вместо более медленного Aggregate
.
Конечно, поскольку вы используете некоторые другие объекты вместо строк, вам нужно заменить string.Format("<a>{0}</a>", s)
на string.Format("<a>{0}</a>", s.LinkText)
.