Linq-to-Entities/Linq-to-SQL,哪种数据轮询方法更高效?

4
以下两个示例是否不同?如果是,哪一个更有效?
var user = (from u in db.Users where u.Id == userId select u).Single();

并且

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

将调试信息从数据上下文中导出,查看生成了哪些查询。 - Ilia G
通常情况下,SQL Profiler 可以帮助解决这类问题。)) - The Smallest
3个回答

4

它们在功能上是等价的。在不同的LINQ提供程序中,它们的实现可能会有轻微的差异,但我预计它们的性能几乎完全相同。例如,LINQ to SQL提供程序为这两个查询生成完全相同的SQL:

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

我希望相同的规则适用于实体框架。

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


2
他们最终将会在SQL和效率方面完全相同。

1

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接