Когда я хочу получить IEnumerable для полной материализации / выдачи всех его результатов, я обычно использую ToList()
следующим образом:
var myList= new List<int>();
IEnumerable<int> myXs = myList.Select(item => item.x).ToList();
Я обычно делаю это, когда блокирую метод, возвращающий результат Linqquery.
В таких случаях я не заинтересован в том, чтобы коллекция стала списком, и я часто не хочу знать, что это за тип.Я просто использую ToList () для его побочного эффекта - получая все элементы.
Если, например, если я изменю тип с List на Array, мне также придется помнить, чтобы изменить ToList () на ToArray() или потерпеть некоторый удар производительности.
Я могу сделать foreach( var e in myList ) { }
, но я не уверен, будет ли это оптимизировано в какой-то момент?
Я ищу что-то вроде myList.Select(item => item.x).yield()
Как лучше всего это сделать?Есть ли способ просто сообщить результат Linq для получения всех его элементов, который лучше, чем ToList
?