按嵌套表分组

本文关键字:嵌套 | 更新日期: 2023-09-27 18:37:15

我有下表

[Order]
[Product]
    ProductId
[OrderDetails]
    OrderId
    ProductId
    Quantity

我必须使用 Order 对象获取一个列表,其中包含按销售额分组的产品总销售额

public class ProductSales 
{
    public decimal Total { get; set; }
    public Product Product { get; set; }
}

给定订单对象列表,我如何选择其产品详细信息,然后按产品对销售额进行分组?

我当前的代码如下所示:

return Orders
       .Select(ordeDetail => new {
           Detail = ordeDetail.OrderDetails
                        .GroupBy(w => new {
                            Detail = w,
                             Product = w.Product})
        .Select (group => new ProductSales {
            Product = group.Key.Product, 
            Quantity = group.Sum(r => r.Quantity)
        })
        .ToList();

按嵌套表分组

您可以按产品分组(按其 ID 或仅按整行):

return Orders
   .Select(ordeDetail => new {
       Detail = ordeDetail.OrderDetails
                    .GroupBy(w=>w.Product)
                    .Select(w=>new ProductSales {
                       Product=w.Key,
                       Total=w.Sum(prod=>prod.Quantity) })
   })
   .ToList();