Ну, вы только выбираете сумму - если вам также нужен ключ, вы должны выбрать его. Например:
var rollup = OrgPersonList.GroupBy(x => x.Person.Org)
.Select(group => new { group.Key,
Sum =group.Sum(x => x.Items.Sum(item => item.Cost))});
Обратите внимание, что я использовал x
вместо person
или price
, так как кажется, что один и тот же элемент инкапсулирует оба.
Или как выражение запроса:
var rollup = from x in OrgPersonList
group x by x.Person.Org into grouped
select new { grouped.Key,
Sum =grouped.Sum(x => x.Items.Sum(item =>item.Cost))});
(Пробелы немного ограничены для форматирования ...)
В качестве альтернативы, группа ... by может рассчитать сумму для каждой записи, поэтому результат должен быть просто суммой записей в группе:
var rollup = from x in OrgPersonList
group x.Items.Sum(item => item.Cost) by x.Person.Org into grouped
select new { grouped.Key, Sum = grouped.Sum() });