У меня есть два объекта, давайте назовем их Input
и Output
Input
имеет свойства Input_ID
, Label
и Input_Amt
Output
имеет свойства Output_ID
и Output_Amt
Я хочу выполнить эквивалентный оператор SQL в LINQ:
SELECT Label, Sum(Added_Amount) as Amount FROM
(SELECT I.Label, I.Input_Amt + ISNULL(O.Output_Amt, 0) as Added_Amount
FROM Input I LEFT OUTER JOIN Output O ON I.Input_ID = O.Output_ID)
GROUP BY Label
Для внутреннего запроса я пишу что-то вроде:
var InnerQuery = from i in input
join o in output
on i.Input_ID equals o.Output_ID into joined
from leftjoin in joined.DefaultIfEmpty()
select new
{
Label = i.Label,
AddedAmount = (i.Input_Amt + leftjoin.Output_Amt)
};
Однако при тестировании оператор возвращает ноль. Что дает?
Кроме того, как я могу продолжить желаемый запрос и выполнить группу после того, как я добавил свои суммы вместе, в одном выражении LINQ?