根据另一列的值汇总DataTable中的列值

时间:2013-11-06 19:57:04

标签: c# asp.net linq

我有一个DataTable,如下所示:

Amount | Count
-----------------------
20.0   | 2
42.0   | 1
78.0   | 5
91.0   | 2

我想根据Count列中的内容总结Amount列。

我想找到0到50到51-100之间所有Count的{​​{1}}之和,在本例中为3和7。

有没有办法快速获取数据?

这是我目前所拥有的:

Amount

我正在寻找更优雅的解决方案

1 个答案:

答案 0 :(得分:1)

学习Linq的一个很好的链接是101 Linq samples。下面的代码应该给你一个很好的起点,虽然它创建的范围从0到<50,50到<100等等。它假设范围确实有规则的间隔。

var dt = new DataTable();
dt.Columns.Add("Amount", typeof(int));
dt.Columns.Add("Count", typeof(int));
dt.Rows.Add(20, 2);
dt.Rows.Add(42, 1);
dt.Rows.Add(78, 5);
dt.Rows.Add(91, 2);
var result = from DataRow x in dt.Rows
                group x by ((int)x["Amount"]) / 50 into grp 
                select new {LowerBoundIncl = grp.Key * 50, 
                        UpperBoundExcl = (grp.Key + 1) * 50, 
                        TotalCount = grp.Sum(y => (int) y["Count"])};

希望这有帮助。