using System.Collections.Generic;
public static void Main()
var orders = new List<Order>();
var orderItems = new List<OrderItem>();
var product = new Product{
var product3 = new Product{
var product2 = new Product{
orderItems.Add(new OrderItem {
orderItems.Add(new OrderItem {
orderItems.Add(new OrderItem {
var mostSoldProduct = orders.Max(order => {
var sameOrderItems = order.OrderItems.GroupBy(orderItem => orderItem.ProductId).ToList();
var eachProductQuantity = sameOrderItems.Select(ois => {
var notDiscontinuedOis = ois.Where(oi => !oi.Product.Discontinued);
Quantity = notDiscontinuedOis.Sum(oi => oi.Quantity)
}).OrderByDescending(pro => pro.Quantity).ToList();
return eachProductQuantity.FirstOrDefault();
Console.WriteLine(mostSoldProduct);
public int OrderId {get;set;}
public ICollection<OrderItem> OrderItems {get;set;}
public int OrderItemId {get;set;}
public int OrderId {get;set;}
public Order Order {get;set;}
public int ProductId {get;set;}
public Product Product {get;set;}
public int Quantity {get;set;}
public int ProductId {get;set;}
public bool Discontinued {get;set;}
public ICollection<OrderItem> OrderItems {get;set;}