日期:2014-05-18  浏览次数:20974 次

datatable分类汇总
我有一组数据存进了一个自定义的datatable,其中数据如下
列一 列二
a 2
a 1
b 5
c 2
b 1
c 1


我想统计成
列一 列二
a 3
b 6
c 3

意思就是一组数据放在一个自定义datatable中,分类汇总以后再用一个datatable接值


希望能给出完整代码

------解决方案--------------------
探讨

引用:
用linq,很简单

linq?
不会用,不好意思新手,请具体的教教我吧,我下午要用。谢谢了。

------解决方案--------------------
var query = from q in datatable.AsEnumerable()
group p by p.id into g
select new {
g.Key,
TotalPrice = g.Sum(p => p.sl)
};
------解决方案--------------------
兄弟,你还真够懒的
var query = from q in datatable.AsEnumerable()
group q by q.Field<string>("列1") into g
select new
{
g.Key,
s = g.Sum(p => p.Field<decimal>("列2"))
};

foreach (var q in query)
{
Response.Write(q.Key.ToString() + "~~" + q.s.ToString() + "<br>");
}


如果实在无法得知列名,则用

var query = from q in datatable.AsEnumerable()
group q by q.Field<string>(0) into g
select new
{
g.Key,
s = g.Sum(p => p.Field<decimal>(1))
};

试试
------解决方案--------------------
代码 如下,我经过测试通过, 很费时的啊,自己模拟数据,自己创建DataTable 
 string[] title = new string[] { "列一", "列二" };
string[,] Conten = new string[,] { { "a", "2" }, { "a", "1" }, { "b", "5" }, { "c", "2" }, { "b", "1" }, { "c", "1" } };
DataTable dt2 = creat.BingDing(title, Conten);
var groupBy = from q in dt2.AsEnumerable()
group q by q[0] into g
select new
{
g.Key,
sumValue = g.Sum(p => Decimal.Parse(p[1].ToString()))
};

foreach (var item in groupBy)
{
string name = item.Key.ToString(); ;
string sumValue = item.sumValue.ToString();
}