Вот предложение:
var stats =
from estimation in test
group estimation by estimation.code into gestimation
let allItems = gestimation.SelectMany(x => x.EstimationItems)
select new
{
Code = gestimation.Key,
ItemNumber = allItems.Count(),
TotalPrice = allItems.Sum(item => item.Price * item.Quantity)
};
Теперь это создает анонимный тип с тремя требуемыми свойствами (код оценки, количество элементов для этого кода оценки и общая стоимость элементов для этогокод оценки).
Вы можете адаптировать его к конкретным потребностям.Просто имейте в виду, что allItems - это IEnumerable<EtimationItem>
, содержащий все EsificationItem, принадлежащие Оценке с тем же кодом.
Если вы хотите использовать этот объект вне области метода его создания, чтоЕсли вы не используете анонимные типы, вы должны создать класс для хранения этих значений.
Исправленное предложение: предложение:
var stats =
(from est in test.Cast<Estimation>()
group est by est.code into gEst
let allItems = gEst.SelectMany(est => est.EstimationItems).Cast<EstimationItem>()
select new TestingUI
{
Code = gEst.Key,
Quantity = gEst.Count(),
Total = gEst.Sum(item => item.Price * item.Quantity)
}).ToList();