Multiple group by and Sum LINQ

后端 未结 4 1891
心在旅途
心在旅途 2020-12-29 07:02

I have a products sales table that looks like this:

saleDate     prod        qty
10/22/09     soap        10
09/22/09     pills       05
09/25/09     soap            


        
4条回答
  •  清酒与你
    2020-12-29 07:26

    var products = new[] {
        new {SaleDate = new DateTime(2009,10,22), Product = "Soap", Quantity = 10},
        new {SaleDate = new DateTime(2009,09,22), Product = "Pills", Quantity = 5},
        new {SaleDate = new DateTime(2009,09,25), Product = "Soap", Quantity = 6},
        new {SaleDate = new DateTime(2009,09,25), Product = "Pills", Quantity = 15}
    };
    
    var summary = from p in products
                  let k = new
                  {
                       //try this if you need a date field 
                       //   p.SaleDate.Date.AddDays(-1 *p.SaleDate.Day - 1)
                      Month = p.SaleDate.ToString("MM/yy"),
                      Product = p.Product
                  }
                  group p by k into t
                  select new
                  {
                      Month = t.Key.Month,
                      Product = t.Key.Product,
                      Qty = t.Sum(p => p.Quantity)
                  };
    
    foreach (var item in summary)
        Console.WriteLine(item);
    
    //{ Month = 10/09, Product = Soap, Qty = 10 }
    //{ Month = 09/09, Product = Pills, Qty = 20 }
    //{ Month = 09/09, Product = Soap, Qty = 6 }
    

提交回复
热议问题