EF 4 Count()选项性能



使用EF 4.1计算表上项目的最高效方法是什么?

this.context.MyTable.Count(x.idTenant == 5);

 this.context.MyTable.Where(x.idTenant == 5).Count();

还有其他方法可以计数表中的实体吗?它更具性能吗?

根据Linq的输出,它们生成的SQL中的表达式是相等的:

SELECT COUNT(*) AS [value]
FROM [MyTable] AS [t0]
WHERE [t0].[idTenant] = @p0

在LINQPad中尝试此操作会显示生成的sql相同:

var r1 = Users.Count(u => u.JurisdictionId == 5).Dump();    
var r2 = Users.Where(u => u.JurisdictionId == 5).Count().Dump(); 

和生成的sql:

SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    COUNT(1) AS [A1]
    FROM [System].[Users] AS [Extent1]
    WHERE 5 = [Extent1].[JurisdictionId]
)  AS [GroupBy1]
GO
SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    COUNT(1) AS [A1]
    FROM [System].[Users] AS [Extent1]
    WHERE 5 = [Extent1].[JurisdictionId]
)  AS [GroupBy1]

这是使用EF 4.2,但应与4.1中的相同。

最新更新