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)
};
我在这里看到了两个主要问题:
第一种情况是,您说要按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)
};
如果这不能解决您的问题,请告诉我们您的问题是什么。