[英]ordering of OrderBy, Where, Select in the Linq query
考慮這個示例代碼
System.Collections.ArrayList fruits = new System.Collections.ArrayList();
fruits.Add("mango");
fruits.Add("apple");
fruits.Add("lemon");
IEnumerable<string> query = fruits.Cast<string>()
.OrderBy(fruit => fruit)
.Where(fruit => fruit.StartsWith("m"))
.Select(fruit => fruit);
我有兩個問題:
Where
返回相同類型,我是否需要編寫最后一個Select
子句? 這個例子來自msdn,為什么他們總是寫它? Select
和Where
,或OrderBy
怎么辦? 不,如果您實際上沒有轉換返回的類型,則Select
不是必需的。
在這種情況下,方法調用的順序可能會影響性能。 在過濾之前對所有對象進行排序肯定比過濾需要更長的時間, 然后對較小的數據集進行排序。
在這種情況下,.Select是不必要的。因為.Cast已經保證你正在使用IEnumerable <string>。
.OrderBy和.Where的排序不會影響查詢的結果,但通常如果你使用。那么首先你會獲得更好的性能,因為排序的元素會更少。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.