2011-03-13 41 views
4
var selectedProducts = from p in products 
         where p.Category == 1 
         select p; 

var selectedProducts = products.Where(p=>p.Category==1) ; 

以上2條語句似乎產生相同的結果。擴展方法和直接查詢的區別

那麼有什麼區別(內部有些時候)?

哪一個更高效?

+0

你可以下載LinqPad和編寫不同的查詢表達式,並觀察什麼lambda表達式是針對查詢表達式產生 – 2011-03-13 11:38:35

回答

2

沒有在這種情況下,該兩路之間的任何差別,但在某些情況下,是更好的使用查詢和在某些情況下最好使用擴展方法或不可能使用查詢。

您可以在情況中使用查詢,這些查詢在擴展方法中很複雜,並且像Join一樣不可讀。 此外,您可以在某些情況下使用擴展方法,如Distinct,這在查詢語法中不可用。您還可以使用擴展方法調用來使用method chaining來提高您的代碼可讀性。

您可以使用擴展方法和查詢的組合,但並不好(代碼可讀性):像

(from p in products 
where p.Category == 1 
select p).Distinct()