实体框架多个计数与一个查询 [英] Entity Framework multiple counts with a single query

查看:72
本文介绍了实体框架多个计数与一个查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对不起,如果这是被问到,但是如何通过单次调用数据库来改善以下内容?

Sorry if this has been asked, but how can I improve the following with a single call to the database?

var statsModel = new
{
     Total = _db.Messages.Count(),
     Approved = _db.Messages.Count(x => x.Approved),
     Rejected = _db.Messages.Count(x => !x.Approved),
};


推荐答案

首先您可以计算被拒绝按总计和接受如下:

First of all you can compute the Rejected by Total and Accepted like this:

Rejected = Total - Approved

为进一步改进,您可以一次计算两者;

And for further improvement you can compute both of them in one shot;

from m in _db.Messages
let Total =  _db.Messages.Count()
let Accept = _db.Messages.Count(x => x.Approved == true)
select new {Total , Accept})

更新:
a现在简单的黑客:只需拿第一行

UPDATE: a simple hack for now : just take the first row

(from m in _db.Messages
let Total =  _db.Messages.Count()
let Accept = _db.Messages.Count(x => x.Approved == true)
select new {Total , Accept}).Take(1);

但我正在寻找一个更干净的一个

But I'm looking for a cleaner one

这篇关于实体框架多个计数与一个查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆