Joh*_*lly 0 linq ienumerable linq-to-objects tolist toarray
这几乎无疑是一个愚蠢的问题.在我的辩护中我生病了.无论如何.
我有一个内存列表中的对象.我使用下面的表达式从我的对象列表中提取出我感兴趣的字符串:
var myStrings = myListOfObjects.Select(r => r.MyString);
Run Code Online (Sandbox Code Playgroud)
这为我提供了一个IEnumerable字符串.myStrings稍后会在我的代码中重复使用多次.我想知道的是,在使用它之前执行ToArray或ToList(即"贪婪"运算符)是否有任何性能优势?(所以我的操作将直接针对数组/列表.)
对于它的价值,myStrings在使用时将被完整地重复使用.
这是速度与空间的权衡.
如果你的Select()回调计算量很大,你可能想要计算一次并存储它以备日后使用.
如果没有,您可能希望节省存储空间并每次都进行计算.
如果你需要随机访问,你一定要打电话ToList(),因为ElementAt()是O(n).
请注意,ToList()速度快于ToArray(),因为ToArray()需要在完成后修剪数组.