Dot-Net
.NET LINQ 查詢語法與方法鏈
以下兩個語句之間是否有任何性能差異?
from item in collection where item.id == 3 select item和
collection.Where(item => item.id ==3)一般來說,LINQ 語法和方法鏈之間是否存在性能差異?
不,因為它們被編譯成完全相同的程式碼。
基本上,查詢表達式被編譯器“預處理”成“沒有查詢表達式的 C# 3”,然後正常應用重載規則、lambda 表達式轉換等。這是一個非常優雅的系統,這意味著查詢表達式的規則僅限於規範的一小部分。
當然,您可以用“鍊式方法”語法編寫各種不能用查詢表達式語法編寫的東西,這可能是由於使用了其他重載或根本不支持這些方法(例如
Count())-但除非您正在使用那些,編譯的程式碼將完全相同。為任何特定場景選擇最易讀的替代方案。