我经常遇到这样的情况:我想在声明查询的地方对查询进行求值。这通常是因为我需要迭代它多次而且,这是昂贵的计算。例如:
string raw = "...";
var lines = (from l in raw.Split('\n')
let ll = l.Trim()
where !string.IsNullOrEmpty(ll)
select ll).ToList();
这很好。如果我不打算修改结果,那么我不妨调用ToArray()
而不是ToList()
。
然而,我想知道ToArray()
是否通过首先调用ToList()
来实现,因此内存效率比只调用ToList()
要低。
我疯了吗?我应该只调用ToArray()
-安全的知识,内存不会被分配两次?