代码:
var result = db.rows.Take(30).ToList().Select(a => AMethod(a));
db.rows.Take(30)是Linq-To-SQL
我使用ToList()来枚举结果,因此查询的其余部分未转换为SQL
哪种方法最快? ToArray的()?
答案 0 :(得分:14)
var result = db.rows
.Take(30)
.AsEnumerable()
.Select(a => AMethod(a));
答案 1 :(得分:2)
如果您不想免费执行数据库查询,请使用Enumerable.AsEnumerable()因为AsEnumerable()
仍然会在执行LINQ to Object查询之前执行数据库查询执行。
如果您确定需要数据和/或想要无线执行数据库查询,请使用Enumerable.ToList()或Enumerable.ToArray()。性能差异应该不大。
我假设在两个调用中,行首先被读入一个可变大小的容器,因为行数尚不可知。所以我倾向于说ToList()
可能会更快一些,因为行可以直接读入列表,而ToArray()
可能首先将行读入一种列表然后复制到数组在所有行都被转移之后。