我在执行外连接和分组时遇到问题,无法让我的Linq statemnt工作。下面是我想要完成一个版本的SQL:如何在实体框架Linq中外连接和分组?
select p.PRIMARY_KEY, min(p.EFFECTIVE_DATE), sum(IsNull(c.PAID_INDEMNITY, 0))
from PRMPOLCY p
left outer join CLMMAST c on p.PRIMARY_KEY = c.POLICY_NO
where p.UNDERWRITER_UID = 93
GROUP BY p.PRIMARY_KEY
下面是我在LINQ的(不工作):
var result = from p in context.PRMPOLCies
join c in context.CLMMASTs on p.PRIMARY_KEY equals c.POLICY_NO into polClm
where (p.UNDERWRITER_UID == underwriter)
from grp in polClm.DefaultIfEmpty()
group grp by p.PRIMARY_KEY into g
select new PolicySummation()
{
PolicyNo = g.Key,
Incurred = g.Sum(grp => grp.PAID_INDEMNITY),
EffDate = g.Min(grp => grp.PRMPOLCY.EFFECTIVE_DATE
};
打我的头撞在墙上试图figurwe这个出来!
感谢递归,看起来像正确的方法。但是,那 ??运算符没有编译 - '左操作数的??运算符应该是引用或可为空的类型'c.PAID_INDEMNITY不可空。有任何想法吗? –
@JimHoagland:我认为它是可空的。你应该能够删除'?? 0'。 – recursive
非常感谢递归! –