У меня есть следующая структура данных (просто примерное визуальное представление):
list<customer>
{
customer
{
name
orders[]
{
order
{
quantity
product
{
price
}
}
order
{
...
}
order
{
...
}
}
customer
{
...
}
customer
{
...
}
}
И я хочу получить имя каждого клиента и общую сумму его заказов (кол-во*цена товара). Теперь у меня есть следующее:
var sumEachCust = from c in customers
let sum = 0.0m
select new
{
c.Name,
sum =+ (from o in c.Orders
select o.Product.Price * o.Quantity).FirstOrDefault()
};
Если объект Customer
имеет более одной записи Order
в своем Orders[]
, то мне нужна сумма всех записей внутри. Но с этим запросом я получаю сумму только для первого заказа.
Если я сделаю это так:
var sumEachCust = from c in customers
let sum = 0.0m
from o in c.Orders
select new
{
c.Name,
sum =+ o.Product.Price * o.Quantity
};
тогда я буду получать имя столько раз, сколько есть объектов заказа в свойстве Orders[]
объекта Customer
, а я этого не хочу.
Просто - сразу имя и сумма всех заказов.