Используя методы IEnumerable, выполните операцию с первым и вторым элементом списка, затем со вторым и третьим, et c, возвращая результат как новый IEnumerable - PullRequest
1 голос
/ 17 июня 2020

Предположим, у меня есть IEnumerable, и я хочу получить разницу между первым и вторым элементом, затем вторым и третьим, третьим и четвертым и т.д. c и получить обратно IEnumerable с одним меньшим количеством элементов.

Я знаю, как сделать это с помощью циклов foreach довольно легко (пропустить первый элемент и сохранить ссылку на предыдущий элемент), однако мне любопытно, есть ли способ сделать это в C# с IEnumerable По умолчанию операторы типа Linq.

1 Ответ

2 голосов
/ 17 июня 2020

Если я правильно понимаю, вы можете использовать Zip с .Skip(1):

var en = Enumerable.Range(0,5).ToList();
var result = en.Zip(en.Skip(1))
    .Select(t => t.First - t.Second)
    .ToList(); // results in list with {-1, -1, -1, -1}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...