Есть метод, возвращающий последовательность, состоящую из пар соседних элементов. Например, по последовательности {1,2,3} метод должен вернуть две пары: (1,2) и (2,3).
Решение, которое сразу пришло в голову:
return items
.Take(items.Count() - 1)
.Zip(items.Skip(1), Tuple.Create);
Но в данном случае IEnumerable перечисляется больше одного раза. Как можно решить задачу без нескольких перечислений (сохранив метод ленивым)?
Ответ
Например, так. Объявим метод расширения, который выдаёт последовательные пары:
public static class EnumerableExtensions
{
public static IEnumerable
И пользуемся:
return items.Pairwise(Tuple.Create);
Комментариев нет:
Отправить комментарий