2010-05-07 4 views
2

У меня есть следующая информацияLinq проблема запроса

var details = Details.Where(d => d.isActive); 

Я хотел бы запросить другую таблицу, Authorizations, который имеет FK к Details, и получить сумму количества разрешений, которые содержатся в details объекта сгруппированы по detail и FundCode.

деталь (1 ко многим) авторизации

кажется достаточно простым, но у меня немного неприятности.

Вот что я в настоящее время:

var account = (from sumOfAuths in Authorizations 
       where details.Contains(sumOfAuths.Details) 
        && sumOfAuths.RequestStatusId == 2 
       group sumOfAuths by new { sumOfAuths.Detail, sumOfAuths.FundCode } into child 
       select new { 
       .... 
       Amount = child.Amount 
       }).Sum() 

Проблема заключается в том, что внутри функции .Sum() У меня есть набор объектов, а не 1. Поэтому я не могу Sum суммы должным образом.

ответ

2

Я считаю, что этот запрос производит то, что вы ищете для:

  var account = from c in Authorizations 
         where details.Contains(c.Details) && c.RequestStatusId == 2 
         group c by new { c.Detail, c.FundCode } into g 
         select new { Key = g.Key, Sum = g.Sum(x => x.Amount) }; 
3

Как правило, вы можете указать, что именно вы хотите просуммировать:

.Sum(x => x.Amount) 

В группах, вы можете использовать вложенные суммы:

.Sum(x => x.Sum(y => y.Amount)); 
Смежные вопросы