[英]How can I convert this SQL to Linq?
我有一个问题:
select siniflar.id,siniflar.sinif,count(ogrenciId)
from siniflar
left join oda
on siniflar.id=oda.sinifId
where siniflar.ogretmenid=2
group by siniflar.id,siniflar.sinif
这是我对 Linq 的转换:
from snf in db.siniflar
join oda in db.oda
on snf.id equals oda.sinifId
where snf.ogretmenid==oID
group oda by new
{
snf.id,snf.sinif
} into g
select new
{
sinifIDsi=g.Key.id,
sinifADi=g.Key.sinif,
Column1 = g.Count()
})
我也想要空计数的结果,但我无法适应 left 或 right join to linq with group by。 DefaultIfEmpty() 方法不起作用。 谁能帮我?
您可以添加DefaultIfEmpty()
来计算左表的空计数,如以下查询:
var result = (from snf in db.siniflar
join oda in db.oda on snf.id equals oda.sinifId into leftedOdatas
from leftedOdata in leftedOdatas.DefaultIfEmpty()
where snf.ogretmenid == 2
group leftedOdata by new {snf.id, snf.sinif } into g
select new
{
sinifIDsi = g.Key.id,
sinifADi = g.Key.sinif,
Column1 = g.Count(x => x?.sinifId != null)
}).ToList();
我希望你觉得这有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.