Как получить поток из List(а)?

В JAVA можно получить поток из различных объектов, например можно получить поток из List list.stream() чтобы в последствии использовать фильтры и т.п (подробнее тут https://annimon.com/article/2778)

Вопрос, а можно реализовать такое на C#?


Ответы (1 шт):

Автор решения: VladD

Аналог функции stream() не нужен.

В отличие от Java, где коллекции не реализуют базовый интерфейс Stream<E>, и его приходится получать при помощи функции stream(), в C# коллекции напрямую реализуют аналогичный интерфейс IEnumerable<T> (то есть как бы сами являются stream'ами).

Пример:

Java

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, -1);
int sum = list.stream().mapToInt(Integer::intValue).filter(n -> n >= 0).sum();
System.out.println(sum);

C#

List<int> list = new() { 1, 2, 3, 4, 5, -1 };
int sum = list.Where(n => n >= 0).Sum();
Console.WriteLine(sum);
→ Ссылка