This question already has answers here:
Does the order of LINQ functions matter?
(7个答案)
3年前关闭。
我想了解在Where子句之前使用OrderBy子句是否会对性能产生任何影响,如下所示:
还是编译器会重新排列指令,以便在OrderBy子句之前执行Where子句?
迭代结束后,将转换为:
不管您将
因此,在这种情况下,不会影响性能。但是,当使用LINQ to Objects(如您的示例)时,这两种变体在性能上有很多差异。 This answer form Jon Skeet很好地涵盖了这种情况。
(7个答案)
3年前关闭。
我想了解在Where子句之前使用OrderBy子句是否会对性能产生任何影响,如下所示:
List<string> names = new List<string> { //... };
var ns = names.OrderBy(n => n).Where(n => n.Length == 5);
还是编译器会重新排列指令,以便在OrderBy子句之前执行Where子句?
最佳答案
这实际上取决于LINQ提供程序(实现IQueryable<T>
的类)。
在Entity Framework和LINQ to SQL(以及其他与数据库相关的LINQ提供程序)上,查询被转换为SQL语句,然后将在数据库引擎上运行。例如,此查询:
var ns = names.OrderBy(n => n).Where(n => n.Length == 5);
迭代结束后,将转换为:
SELECT * FROM names WHERE LEN(name) == 5 ORDER BY name
不管您将
OrderBy
子句放在何处。因此,在这种情况下,不会影响性能。但是,当使用LINQ to Objects(如您的示例)时,这两种变体在性能上有很多差异。 This answer form Jon Skeet很好地涵盖了这种情况。
关于c# - 在Where子句之前的OrderBy子句-性能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16746389/
10-13 09:31