【发布时间】:2013-02-04 20:45:57
【问题描述】:
数据表如下:
Item CartonID Quantity
A 0001 1000
A 0002 500
A 0003 250
A 0002 500
B 0002 500
B 0003 250
我的输出假设是这样的:
ItemNo CartonID TotalCarton TotalQuantity
A 0001,0002,0003 3 2250
B 0002,0003 2 750
但我的结果如下:
ItemNo CartonID TotalCarton TotalQuantity
A 0001, 0002, 0003 3 2,250
B 0002, 0003 2 750
我的代码如下:
var items = ( from item in dtTest.AsEnumerable()
group item by new
{
Item_No=item.Field<string>("Item")
}
into g
select new
{
g.Key.Item_No,
TotalCarton = (from p in dtTest.AsEnumerable()
where p.Field<string>("Item") == g.Key.Item_No
select p.Field<string>("CartonID")).Distinct().ToArray().Count(),
Total_Quantity =g.Sum((p=>p.Field<decimal>("Quantity"))).ToString("###,###,###,###"),
CartonID = (from p in dtTest.AsEnumerable()
where p.Field<string>("Item") == g.Key.Item_No
select p.Field<string>("CartonID")).Distinct().ToArray().Aggregate
((p1, p2) => p1 + ", " + p2)
}).ToList();
任何人都可以告诉我如何用不同的纸箱 ID 对总数求和。提前致谢。
【问题讨论】:
-
B 项的一共有 4 个纸箱怎么办?
-
TotalCarton 代表什么?为什么在您的示例中,项目 B 的 TotalCarton 应该是四个而不是两个?根据您的数据,对于项目 A,有四个纸箱,但三个主题不同(TotalCarton = 3)。对于 B 项,只有两个纸箱 (TOtalCarton = 2)。
-
对不起,这是我的错。 B 项的总纸箱为 2 个。