У меня возникли проблемы с тем, чтобы моя работа Statjnt Linq работала при выполнении внешнего соединения и группы. Вот SQL версия того, что я пытаюсь выполнить:Как выполнить внешнее объединение и группировать в Entity framework 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 не имеет значения NULL. Есть идеи? –
@JimHoagland: Я предполагал, что он был ничтожен. Вы должны просто удалить «?? 0'. – recursive
Много обязательных рекурсивных! –