【问题标题】:product sale qty sum and name in linq group querylinq 组查询中的产品销售数量和名称
【发布时间】:2021-11-04 00:43:42
【问题描述】:

我有一个产品销售数据,想显示按产品 ID 分组的销售摘要。 汇总结果应显示产品名称和总销售额。如何选择一个字段以及 groupby 结果并且该字段不是关键字段。

public partial class SaleOrderDetail
{
    public int Id { get; set; }
    public int ProductId { get; set; }
    public string ProductName { get; set; }
    public int Quantity { get; set; }
    public decimal Price { get; set; }
    public decimal LineTotal { get; set; }
}

var query = from saleorder in _dbContext.SaleOrderDetail
                      group saleorder by saleorder.ProductId into salesummary
                      select new
                      {
                          productid = salesummary.Key,
                          prdouctname = salesummary.First().ProductName,
                          totalqty = salesummary.Sum(s => s.Quantity)
                      };

由于产品名称的 First(),我收到错误 invalidoperationException。

【问题讨论】:

    标签: linq group-by


    【解决方案1】:

    您必须在分组密钥中包含ProductName

    var query = 
        from saleorder in _dbContext.SaleOrderDetail
        group saleorder by new {saleorder.ProductId, saleorder.ProductName} into salesummary
        select new
        {
            productid = salesummary.Key.ProductId,
            prdouctname = salesummary.Key.ProductName,
            totalqty = salesummary.Sum(s => s.Quantity)
        };
    

    【讨论】:

      【解决方案2】:

      将 SaleOrderDetail 设置为 AsEnumerable() 就可以了。对于 SQL 表达式,如果将其设置为 AsEnumerable() 或 .ToList 等,它将起作用。

      var query = from saleorder in _dbContext.SaleOrderDetail.AsEnumerable()
                            group saleorder by saleorder.ProductId into salesummary
                            select new
                            {
                                productid = salesummary.Key,
                                prdouctname = salesummary.First().ProductName,
                                totalqty = salesummary.Sum(s => s.Quantity)
                            };
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-12
        • 2016-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多