Охлаждается, как поле CauseID представляет внешний ключ?Если это так, то вы можете сопоставить ассоциацию в вашей модели сущности, так что cause.Orders
- это свойство, к которому вы можете получить доступ.Заметьте, вы также можете переименовать сущности / свойства, они не должны совпадать с именами таблиц, чтобы вы могли избавиться от уродливых подчеркиваний!Тогда это будет выглядеть так:
var result = from c in context.Of_Causes
select new {cause, cause.Orders.Sum(o => o.Contribution}
Вы получите несколько преимуществ от этого (если сможете), например, более чистую модель и более эффективные генерируемые запросы SQL.
Если вы не можете использовать внешний ключ, я бы присоединился к таблицам вручную, что опять-таки должно повысить производительность.
Я считаю, что это выглядело бы так, но мой перевод с VB на C # может быть хитрым,C #:
var context = new ModelContainer();
var result = from c in context.Of_Cause
join o in context.Of_Orders on c.Id equals o.CauseID into g
select new {Cause = c, Total = g.Sum(o => o.Contribution)};
А вот оригинал VB на случай, если мой перевод выключен!
Dim result = From cause As Of_Cause In context.Of_Cause
Group Join order As Of_Orders In context.Of_Orders On order.CauseID Equals cause.Id Into total = Sum(order.Contribution)
Select New With {.Cause = cause, .Total = total}