簡體   English   中英

訂購OrderBy,Where,在Linq查詢中選擇

[英]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);

我有兩個問題:

  1. 如果Where返回相同類型,我是否需要編寫最后一個Select子句? 這個例子來自msdn,為什么他們總是寫它?
  2. 這些方法的正確順序是什么? 訂單會影響某些事情嗎? 如果我交換SelectWhere ,或OrderBy怎么辦?
  1. 不,如果您實際上沒有轉換返回的類型,則Select不是必需的。

  2. 在這種情況下,方法調用的順序可能會影響性能。 過濾之前所有對象進行排序肯定比過濾需要更長的時間, 然后對較小的數據集進行排序。

在這種情況下,.Select是不必要的。因為.Cast已經保證你正在使用IEnumerable <string>。

.OrderBy和.Where的排序不會影響查詢的結果,但通常如果你使用。那么首先你會獲得更好的性能,因為排序的元素會更少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM