Я хочу создать запрос linq, который будет суммировать общее количество заказов клиентов. В зависимости от того, какой клиент уже заказал, мне нужно применить мультипликатор в зависимости от типа продукта. Например, Заказчик заказал один продукт SaaS и два продукта PaaS. Для каждого продукта PaaS в этом порядке я хочу умножить цену на 1,5, а для SaaS цена будет умножена на 0,8.
Сейчас у меня есть код, который даст мне общую сумму, независимо от продукта, продукта. Как я могу написать запрос, который будет суммировать продукты для каждого клиента в зависимости от типа продукта, который заказал клиент? Я также хочу, чтобы это было в форме словаря, поэтому для каждого идентификатора у меня будет сумма всех заказов.
Вот небольшой фрагмент кода, который я подготовил, для лучшего понимания:
public class Calculator
{
public void Calculate()
{
// Let's pretend that customers comes from some sort of DB context
IDictionary<int, decimal> totalls = customers
.ToDictionary(c => c.ID, c => c.OrderItems.Sum(oi => oi.PriceNet));
foreach (KeyValuePair<int, decimal> item in totalls)
{
Console.WriteLine($"{item.Key} {item.Value}");
}
}
}
public class Order
{
public Customer Customer { get; set; }
public ICollection<OrderItem> OrderItems { get; set; }
public Order()
{
this.OrderItems = new List<OrderItem>();
}
}
public class OrderItem
{
public Customer Customer { get; set; }
public Order Order { get; set; }
public decimal PriceNet { get; set; }
public Product Product { get; set; }
}
public class Customer
{
public int ID { get; set; }
public ICollection<Order> Orders { get; set; }
public ICollection<OrderItem> OrderItems { get; set; }
public Customer()
{
this.Orders = new List<Order>();
this.OrderItems = new List<OrderItem>();
}
}
public class Product
{
public EnumProductType Type { get; set; }
}
public enum EnumProductType
{
SAAS,
PAAS
}