【发布时间】:2019-01-02 08:01:12
【问题描述】:
当我想让一个 IEnumerable 急切地实现/产生它的所有结果时,我通常使用 ToList() 像这样:
var myList= new List<int>();
IEnumerable<int> myXs = myList.Select(item => item.x).ToList();
我通常在锁定返回 Linq 查询结果的方法时这样做。
在这种情况下,我实际上对将集合变成列表并不感兴趣,而且我通常不想知道它的类型。我只是因为它的副作用而使用 ToList() - 产生所有元素。
例如,如果我将类型从 List 更改为 Array,我还必须记住将 ToList() 更改为 ToArray() 或遭受一些性能损失。
我可以做到foreach( var e in myList ) { },但我不确定这是否会在某个时候进行优化?
我正在寻找类似myList.Select(item => item.x).yield()的东西
最好的方法是什么?有没有办法简单地告诉一个 Linq 结果来产生比 ToList 更好的所有元素?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。