我已经被这个问题困住了几天了。
如何按PartCode分组,获取描述的最大值/最小值或第一个值(具有相同部件代码的项目可能具有不同的描述),然后是其他字段的总和。我目前拥有的内容如下所示:
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)
};
答案 0 :(得分:1)
我在这里看到两个主要问题:
首先,你说你想通过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)
};
如果这不能解决您的问题,请告诉我们您的问题。