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
()中语句的第一部分实际上是评估尚未执行的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)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |