Лучший способ получить количество IEnumerable<T>

Решение зависит от того, почему visual-c# вы не хотите перечислять csharp всю коллекцию.

Если это связано c# с тем, что перечисление коллекции linq-query-syntax может быть медленным, то c# нет более быстрого решения. Возможно, вы linq-query-syntax захотите рассмотреть возможность csharp использования ICollection, если .cs-file это возможно. Если перечисление linq-query-syntax не очень медленное (например, оно c#.net считывает элементы с диска), скорость linq не должна быть проблемой.

Если c-sharp это связано с тем, что для .cs-file перечисления коллекции потребуется .cs-file больше кода, то он уже написан linq для вас в виде метода расширения c#.net .Count(). Просто используйте c#-language MyEnumerable.Count().

Если c-sharp это связано с тем, что вы linq-query-syntax хотите иметь возможность language-integrated-query перечислить коллекцию после csharp подсчета, тогда метод расширения c# .Count() позволяет это сделать. Вы c#.net даже можете вызвать .Count() для linq коллекции, которую вы в процессе linq перечисления, и она продолжится visual-c# с того места, где она была c#-language до подсчета. Например:

foreach (int item in Series.Generate(5))
{
    Console.WriteLine(item + "(" + myEnumerable.Count() + ")");
}

даст c-sharp результаты

0 (5)

1 (5)

2 (5)

3 visual-c# (5)

4 (5)

Если это связано language-integrated-query с тем, что перечисление имеет visual-c# побочные эффекты (например, запись c# на диск/консоль) или зависит csharp от переменных, которые могут language-integrated-query изменяться между подсчетом c-sharp и перечислением (например, чтение c#-language с диска) [N.B. Если возможно, я c#.net бы предложил переосмыслить c#.net архитектуру, так как это c#.net может вызвать много проблем], тогда .cs-file одна из возможностей рассмотреть csharp — это чтение перечисления c#-language в прерывистое хранилище. Например:

List seriesAsList = Series.Generate(5).ToList();

Все c-sharp вышеперечисленное предполагает, что c#.net вы не можете изменить тип visual-c# (т. е. он возвращается из linq библиотеки, которой вы не c#.net владеете). Если возможно, вы c# можете рассмотреть возможность linq-query-syntax использования ICollection visual-c# или IList (ICollection имеет c-sharp более широкую область действия, чем c# IList), у которых есть свойство .cs-file Count.

c#

linq

2022-10-11T19:29:34+00:00