Linq-to-Entities / Linq-to-SQL,一种数据轮询方法更有效吗?

时间:2010-11-29 21:20:35

标签: c# linq linq-to-sql linq-to-entities

以下两个示例是否有所不同,如果有,哪个更有效?

var user = (from u in db.Users where u.Id == userId select u).Single();

var user = db.Users.Single(p => p.Id == userId);

3 个答案:

答案 0 :(得分:4)

它们在功能上是等同的。它们在各种LINQ提供程序中的实现方式可能略有不同,但我预计性能几乎完全相同。例如,LINQ to SQL提供程序为两个查询生成完全相同的SQL:

SELECT [t0].[Id], [t0].[Name]
FROM [dbo].[User] AS [t0]
WHERE [t0].[Id] = @p0

我希望这同样适用于实体框架。

如果我必须选择一个,我会选择第二个版本,因为它更简洁,不会失去清晰度。事实上,我会说它更清晰 - 关键词噪音更少,因此业务逻辑更突出。

答案 1 :(得分:2)

它们最终会相同(SQL和效率明智)。

答案 2 :(得分:1)

他们是一样的。编译器应该为两种LINQ语法产生相同的结果。