Linq-群、和和最大值

本文关键字:最大值 Linq- | 更新日期: 2023-09-27 18:25:22

我已经被这个问题困扰了好几天了。

如何按零件代码进行分组,取"描述"的"最大/最小"或"第一"值(具有相同零件代码的项目可能有不同的描述),然后取其他字段的和。我目前拥有的如下所示:

var lengths =
                from q in
                    (from p in partList
                     select new { p.PartCode, p.Description, p.Quantity, p.TotalMeter, p.PurchaseLength })
                group q by new { q.PartCode, q.Description, q.Quantity, q.TotalMeter, q.PurchaseLength } into g
                orderby g.Key.PartCode
                select new
                {
                    PartCode = g.Max(p => p.PartCode),
                    Description = g.Max(p => p.Description),
                    Quantity = g.Sum(p => p.Quantity),
                    TotalMeter = g.Sum(p => p.TotalMeter),
                    PurchaseLength = g.Sum(p => p.PurchaseLength)
                };

Linq-群、和和最大值

我在这里看到了两个主要问题:

第一种情况是,您说要按PartCode进行分组,但实际上是按所有内容的组合进行分组。

另一个可能的问题是,在我只能假设是字符串集合的对象上使用Max()。这不会失败,但它会选择按字母顺序排在最后的值(这是你想要的吗?)。

试试这个:

var lengths =
    from q in
        (from p in partList
        select new { p.PartCode, p.Description, p.Quantity, 
                     p.TotalMeter, p.PurchaseLength })
    group q by q.PartCode into g
    orderby g.Key
    select new
    {
        PartCode = g.First().PartCode,
        Description = g.First().Description,
        Quantity = g.Sum(p => p.Quantity),
        TotalMeter = g.Sum(p => p.TotalMeter),
        PurchaseLength = g.Sum(p => p.PurchaseLength)
    };

如果这不能解决您的问题,请告诉我们您的问题是什么