实体框架多个罪名单一查询 [英] Entity Framework multiple counts with a single query

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

问题描述

很抱歉,如果这已被问过,但我怎么能改善到数据库的单一调用下面?

  VAR statsModel =新
{
     总= _db.Messages.Count()
     批准= _db.Messages.Count(X => x.Approved)
     拒绝= _db.Messages.Count(X =>!x.Approved)
};


解决方案

首先,你可以计算拒绝由道达尔和接受这样的:

 拒绝=总 - 批准

和进一步改进可以在拍摄同时计算他们的;

 从_db.Messages米
让总= _db.Messages.Count()
让接受= _db.Messages.Count(X => x.Approved == true)而
选择新的{总,接受})

更新:
现在一个简单的黑客:只取第一行

 (从_db.Messages米
让总= _db.Messages.Count()
让接受= _db.Messages.Count(X => x.Approved == true)而
选择新的{总,接受})采取(1)。

但我在寻找一个更清洁的有一个

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 on shot;

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

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天全站免登陆