求一个集合的集合下所有集合元素求值
场景是这样的:Order下有一个Suppler的集合,即一个订单下可能有多个供应商;Supplier下有一个Product的集合,即对一个供应商采购多个产品。
需求是这样的:算出所有订购产品的总价
模型这样:
public class Order { public int OrderId { get; set; } public ICollection<Supplier> Suppliers { get; set; } public Order() { Suppliers = new List<Supplier>(); } } public class Supplier { public int SupplierId { get; set; } public ICollection<Product> Products { get; set; } public Supplier() { Products = new List<Product>(); } } public class Product { public int ProductId { get; set; } public decimal UnitPrice { get; set; } public int Quantity { get; set; } }
这样算出总价:
static void Main(string[] args) { var orders = new List<Order> { new Order { OrderId = 1, Suppliers = new List<Supplier> { new Supplier {SupplierId=11, Products= new List<Product> { new Product {ProductId=111, Quantity=1, UnitPrice=10 }, new Product {ProductId = 112, Quantity =1, UnitPrice = 20 } } }, new Supplier {SupplierId =12, Products = new List<Product> { new Product {ProductId =113, Quantity =2, UnitPrice=30 }, new Product {ProductId=114, Quantity=1, UnitPrice=50 } } } } } }; var suppliers = orders.Select(t => t.Suppliers); var productTotalPrice = suppliers.Sum(t => t.Sum(p => p.Products.Sum(o => o.Quantity * o.UnitPrice))); Console.WriteLine(productTotalPrice); Console.ReadKey(); }