下面兩個例子是不同的,如果是這樣,哪個更有效?Linq-to-Entities/Linq-to-SQL,是一種數據輪詢方法更高效嗎?
var user = (from u in db.Users where u.Id == userId select u).Single();
和
var user = db.Users.Single(p => p.Id == userId);
下面兩個例子是不同的,如果是這樣,哪個更有效?Linq-to-Entities/Linq-to-SQL,是一種數據輪詢方法更高效嗎?
var user = (from u in db.Users where u.Id == userId select u).Single();
和
var user = db.Users.Single(p => p.Id == userId);
它們在功能上等同。它們在各種LINQ提供程序中的實現方式可能會有細微的差異,但我期望的性能幾乎完全相同。在LINQ to SQL的供應商,例如產生兩個查詢完全相同的SQL:
SELECT [t0].[Id], [t0].[Name]
FROM [dbo].[User] AS [t0]
WHERE [t0].[Id] = @p0
我想到的是,同樣適用於實體框架。
如果我不得不挑選一個,我會選擇第二個版本,因爲它更簡潔明瞭,沒有任何損失。事實上,我會說它更清楚 - 關鍵字噪音較少,因此業務邏輯更突出。
它們都將完全相同(SQL和效率明智)。
它們是相同的。對於兩種LINQ語法,編譯器都應該產生相同的結果。
從數據上下文管道調試信息並查看生成的查詢 – 2010-11-29 21:22:51