假设我有一个名为Population的表来存储一些人口统计数据.在T-SQL中,要获得超过50的人数,我可能会这样做:
SELECT COUNT(*) FROM POPULATION
WHERE AGE > 50
Run Code Online (Sandbox Code Playgroud)
我认为以下linq语句可以工作,但它只返回零,我不明白为什么.
var count = _context.Population.Count(x => x.Age > 50);
Run Code Online (Sandbox Code Playgroud)
为了让我真正得到计数,我必须做以下任何一种情况:
var count = _context.Populaton.Where(x => x.Age > 50).Count();
var count = _context.Population.Select(x => x.Age > 50).Count();
Run Code Online (Sandbox Code Playgroud)
上述情况为何如此?
Linq 不会首先检索所有记录。它将查询的执行推迟到最后一刻。这允许优化查询。
http://blogs.msdn.com/b/charlie/archive/2007/12/09/deferred-execution.aspx
我发现有时顺序很重要。希望这可以帮助。
鲍勃
| 归档时间: |
|
| 查看次数: |
965 次 |
| 最近记录: |