实体框架多个罪名单一查询 [英] Entity Framework multiple counts with a single query
本文介绍了实体框架多个罪名单一查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
很抱歉,如果这已被问过,但我怎么能改善到数据库的单一调用下面?
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屋!
查看全文