如果没有要计数的记录为空或null,我会计算相等的字符串,我的字符串是"sm_red“。
MVC LinQ .NET框架4.5
List<string> trae = new List<string>();
trae = db.SM_App.Where(x => x.sm_canal.ToString() == "EVERYTHING").Select(x => x.sm_categoria).Distinct().ToList();
var query = (from a in trae
join b in db.SM_App on a equals b.sm_categoria
where b.sm_canal == "EVERYGHINT" && b.sm_fecha > sDate && b.sm_fecha < fDate
group b by b.sm_categoria into g
select new
{
Categoria = g.Key,
Facebook = g.Count(x => x.sm_red == "Facebook"),
Twitter = g.Count(x => x.sm_red == "Twitter"),
Instagram = g.Count(x => x.sm_red == "Instagram")
}).Distinct().ToList();更新13/08/2019
我尝试这样做,但返回"Count = 0",在视图中不返回任何内容
var query = (from a in trae
join b in db.SM_App on a equals b.sm_categoria into grp
from c in grp.DefaultIfEmpty()
where c.sm_canal == "EVERY" && c.sm_fecha > sDate && c.sm_fecha < fDate
group c by c.sm_categoria into g
select new
{
Categoria = g.Key,
Facebook = g.Count(x => x.sm_red == "Facebook").ToString() == "" ? Convert.ToInt32(g.Key) : 0,
Twitter = g.Count(x => x.sm_red == "Twitter").ToString() == "" ? Convert.ToInt32(g.Key) : 0,
Instagram = g.Count(x => x.sm_red == "Instagram").ToString() == "" ? Convert.ToInt32(g.Key) : 0
}).Distinct().ToList();发布于 2019-08-13 05:08:07
如果您的整个查询返回零条记录,那么您的结果中也将没有记录。如果希望记录中包含0%s,则必须使用DefaultIfEmpty()
var query = (from a in trae
join b in db.SM_App on a equals b.sm_categoria
where b.sm_canal == "EVERYGHINT" && b.sm_fecha > sDate && b.sm_fecha < fDate
group b by b.sm_categoria into g
select new {
Categoria = g.Key,
Facebook = g.Count(x => x.sm_red == "Facebook"),
Twitter = g.Count(x => x.sm_red == "Twitter"),
Instagram = g.Count(x => x.sm_red == "Instagram")
}).Distinct()
.DefaultIfEmpty(new {
Categoria = default(string),
Facebook = 0,
Twitter = 0,
Instagram = 0
})
.ToList();我不知道在这种情况下你所期望的Categoria是什么,或者它的类型,所以我只是假设了string和default(string),它是null。
https://stackoverflow.com/questions/57466859
复制相似问题