[英]Is there any real difference between “and” and “wheres” in linq
我有這個問題
from a in objects
where a.property1 == 2
&& a.property2 == 3
select a
和
from a in objects
where a.property1 == 2
where a.property2 == 3
select a
我想知道如何執行語句以及使用任何一個語句會帶來什么好處
截至目前,我的問題是linq對象
您的第一個案例將轉換為:
objects.Where(a => a.property1 == 2 && a.property2 == 3);
而后者將轉換為:
objects.Where(a => a.property1 == 2).Where(a => a.property2 == 3);
不同之處在於后者將被過濾兩次,而第一次是在lambda中進行比較。
這是假設LINQ到對象; 其他提供商將依賴於實施。
實際上,這兩個語句是相同的,因為如果左側為真,C#僅評估AND操作的右側。
如果使用AND評估C#不是懶惰的,那么在大多數項目無法滿足第一個標准(或第二個標准是昂貴的評估)的情況下,順序WHERE評估可能會提供相當顯着的性能提升。 然而,就目前而言,C#默認是懶惰的,因此與懶惰評估的LINQ相當。
如果存在差異取決於底層LINQ提供程序。 LINQ提供程序負責將您的LINQ查詢轉換為基礎功能表示,例如SQL。
對我來說真正的區別在於可讀性。 兩個鏈接的語句會降低可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.