Есть объект List
var src = new List
В исходном списке дубликаты не возможны, т.е. {0,1,1,3,5} не рассматривается. Список предварительно отсортирован
как написать функцию которая будет возвращать список объектов к котором будут последовательно идущие цифры, т.е. необходимо получить следующий результат:
var result = new List>
{
new List
мне в голову приходит только вариант сделать в цикле for но мне кажется что это можно сделать более элегантней с использованием linq
Ответ
В данном случае можно использовать метод Aggregate, с начальным значением для аккумулятора.
src.Aggregate(new List>(), (acc, cur) =>
{
//проверяем что мы, либо зашли в первый раз, либо разница между элементами больше 1.
if (acc.Count == 0 || cur - acc.Last().Last() > 1)
{
//добавляем новый список с текущим элементом
acc.Add(new List
//возвращаем аккумулятор
return acc;
});
Комментариев нет:
Отправить комментарий