我有一个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
我正在寻找更优雅的解决方案
答案 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"])};
希望这有帮助。