使用Entity Framework在一个查询中选择并计数?

时间:2014-09-29 10:04:31

标签: sql-server entity-framework

我正在从一些REST路由返回分页,过滤结果。如果我简化我的代码,它就是这样的:

var query = db.SomeTable.Where(row => row.SomeProperty > 42);

return new Result {
    data = query.Skip(skip ?? 0).Take(take ?? 25).ToList(),
    count = query.Count() };

这样可行,但它会对SQL Server数据库产生两个查询:一个用于获取数据,另一个用于计算数据。如何在一个查询中执行此操作而不使用手写的T-SQL查询?

1 个答案:

答案 0 :(得分:0)

尝试:

var query = db.SomeTable.Where(row => row.SomeProperty > 42);

return query.Select (q => new{q, Total = db.SomeTable.Count()})
    .Skip(skip ?? 0).Take(take ?? 25).ToList();

修改

这很糟糕!它最终将返回每条记录的计数,但如果你想用一个数据库点击它就可以这样做