Независимо от типа коллекции, которую я использую в качестве входных данных, LINQ всегда возвращает IEnumerable<MyType>
вместо List<MyType>
или HashSet<MyType>
.
Из учебника MSDN :
int[] numbers = new int[7] { 0, 1, 2, 3, 4, 5, 6 };
// numQuery is an IEnumerable<int> <====== Why IEnumerable<int> instead of int[]?
var numQuery =
from num in numbers
where (num % 2) == 0
select num;
Интересно, каково обоснование решения не сохранять тип коллекции (например, тип элемента), а не предлагаемый обходной путь.
Я знаю, что toArray
, toDictionary
или toList
существуют, вопрос не в этом.
Редактировать: Чем отличается реализация в C # от Scala, где она работает без повсеместного переопределения возвращаемых типов?