.NET LINQ to SQL查询效率

Pac*_*man -1 .net c# linq linq-to-sql

我正在研究LINQ,尤其是MSDN上的LINQ to SQL,并且遇到了这个例子,除非有一些聪明的魔术,否则看起来像是一个极其牺牲计算资源而不是代码可读性的情况.

int highScoreCount =
    (from score in scores
     where score > 80
     select score)
     .Count();
Run Code Online (Sandbox Code Playgroud)

有人请告诉我,此查询不会加载列表中的所有分数只是为了得到他们的计数.甚至不是80分以上的分数.

如果是这个特定查询的情况,是否有人要更改它以避免加载完整的分数列表?比如"选择(计数)得分".

谢谢.

编辑:我为懒惰而道歉,并没有想办法先查看生成的SQL.我发现最简单的方法是使用LinqPad

Kni*_*Fox 5

()中语句的第一部分实际上是评估尚未执行的IQueryable.当您对其调用Count()函数时,它将按如下方式编译和计算查询

SELECT 
[GroupBy1].[A1] AS [C1]
FROM ( SELECT 
    COUNT(1) AS [A1]
    FROM [dbo].[scores] AS [Extent1]
    WHERE [Extent1].[score] > 80
)  AS [GroupBy1]
Run Code Online (Sandbox Code Playgroud)