db.opt.Select(z => new {
z.QuestionTitle,
Count = z.Responces.Where(x => x.Responseval == Constants.options.Agree).Count(),
Perc = (totresponcecount/Count)*100
}).ToList();
在上面的lambda中,计算百分比,例如我想写(totresponcecount/Count)*100
,其中Count
已经在上面的陈述中计算过。
那么我怎样才能访问Count
值来编写Perc = (totresponcecount/Count)*100
?
答案 0 :(得分:5)
我认为在这种情况下使用let
关键字查询语法更好:
var result = from z in db.opt
let count = z.Responces.Count(x => x.Responseval == Constants.options.Agree)
select new { z.QuestionTitle, count , Perc = (totresponcecount/count) * 100 };
另请注意,您可以将谓词传递给Count
方法,因此不需要Where(...).Count()
。
答案 1 :(得分:4)
我建议再使用一个select语句来保存这个变量:
db
.opt
.Select(z => new
{
z.QuestionTitle,
Count = z.Responces.Where(x => x.Responseval == Constants.options.Agree).Count()
})
.Select(z => new
{
z.QuestionTitle,
z.Count,
Perc = (totresponcecount / z.Count) * 100
})
.ToList();