代码:
var result = db.rows.Take(30).ToList().Select(a => AMethod(a));
db.rows.Take(30) 是 Linq-To-SQL。
我使用 ToList() 枚举结果,所以查询的其余部分不会被翻译成 SQL。
哪种方法最快?ToArray() 吗?
代码:
var result = db.rows.Take(30).ToList().Select(a => AMethod(a));
db.rows.Take(30) 是 Linq-To-SQL。
我使用 ToList() 枚举结果,所以查询的其余部分不会被翻译成 SQL。
哪种方法最快?ToArray() 吗?
var result = db.rows
.Take(30)
.AsEnumerable()
.Select(a => AMethod(a));
如果您不想立即执行数据库查询,可以使用Enumerable.AsEnumerable(),因为AsEnumerable()
仍将推迟数据库查询的执行,直到开始枚举LINQ对象查询。
如果您确定需要数据和/或希望立即执行数据库查询,请使用Enumerable.ToList()或Enumerable.ToArray()。性能差异应该不会太大。
我假设在两个调用中,首先将行读入变量大小的容器中,因为尚未知道行数。因此,我倾向于认为ToList()
可能会更快,因为行可以直接读入列表中,而ToArray()
可能会首先将行读入一种列表中,然后在所有行传输完毕后将其复制到数组中。