TYR*_*AEL 10 c# entity-framework entity-framework-4 asp.net-mvc-3
很抱歉,如果有人询问过,但如何通过一次调用数据库来改进以下内容?
var statsModel = new
{
Total = _db.Messages.Count(),
Approved = _db.Messages.Count(x => x.Approved),
Rejected = _db.Messages.Count(x => !x.Approved),
};
Run Code Online (Sandbox Code Playgroud)
这可能有所帮助:
var statsModel =(
from message in _db.Messages
group message by 1 into g
select new
{
Total = g.Count(),
Approved =g.Count (x =>x.Approved),
Rejected =g.Count (x =>!x.Approved)
}
).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
首先,你可以Rejected
像这样计算总计和接受:
Rejected = Total - Approved
Run Code Online (Sandbox Code Playgroud)
为了进一步改进,您可以一次性计算它们;
from m in _db.Messages
let Total = _db.Messages.Count()
let Accept = _db.Messages.Count(x => x.Approved == true)
select new {Total , Accept})
Run Code Online (Sandbox Code Playgroud)
更新: 现在简单的黑客攻击:只需要第一行
(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);
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一个更清洁的
归档时间: |
|
查看次数: |
3876 次 |
最近记录: |