Dot-Net

.NET LINQ 查詢語法與方法鏈

  • September 23, 2010

以下兩個語句之間是否有任何性能差異?

from item in collection 
where item.id == 3
select item

collection.Where(item => item.id ==3)

一般來說,LINQ 語法和方法鏈之間是否存在性能差異?

不,因為它們被編譯成完全相同的程式碼。

基本上,查詢表達式被編譯器“預處理”成“沒有查詢表達式的 C# 3”,然後正常應用重載規則、lambda 表達式轉換等。這是一個非常優雅的系統,這意味著查詢表達式的規則僅限於規範的一小部分。

當然,您可以用“鍊式方法”語法編寫各種不能用查詢表達式語法編寫的東西,這可能是由於使用了其他重載或根本不支持這些方法(例如Count())-但除非您正在使用那些,編譯的程式碼將完全相同。為任何特定場景選擇最易讀的替代方案。

引用自:https://stackoverflow.com/questions/3776577