日期:2014-05-20  浏览次数:20984 次

百分求助 Linq查询 DataTable 分组 多列求和
DataTable例子如下:(当然数据远不止这些)

  Name a b c d e f g
  卡卡 2 1 4 5 6 7 9 
  梅西 2 4 1 5 6 7 9
  保罗 7 6 3 5 6 7 9
  卡卡 9 3 5 5 6 7 9
  梅西 6 7 4 5 6 7 9
  保罗 8 9 8 5 6 7 9  

我现在想用 linq 实现 按 Name分组 在把后面的列值求和 
实现效果如下:

  Name a b c d e f g 当然 b c d e f g 列均需要求和
  卡卡 a列Name为卡卡的和 1 4 5 6 7 9 
  梅西 a列Name为卡卡的和 4 1 5 6 7 9
  保罗 a列Name为卡卡的和 6 3 5 6 7 9

希望问题已经表速明白,麻烦大侠给解答下,谢谢

------解决方案--------------------
C# code
var Query=from t in table
    group t by t.name
    select new{name=g.key,a=g.sum(v=>v.a),b=g.sum(v=>v.b),.....}

------解决方案--------------------
var re = from t in datatable
group t by new {t.a,
t.b,
t.c,
t.d} into g
select new {g.key,
e=g.Sum(k => k.a)};

------解决方案--------------------
var table = from t in _dt3.AsEnumerable()
group t by t.Field<string>("Name0") into s
select new
{
Name0 = s.Key,
Name1 = s.Sum(v => v.Field<string>("Name1")),
Name2 = s.Sum(v => v.Field<string>("Name2")),
Name3 = s.Sum(v => v.Field<string>("Name3")),
Name4 = s.Sum(v => v.Field<string>("Name4")),
Name5 = s.Sum(v => v.Field<string>("Name5")),
Name6 = s.Sum(v => v.Field<string>("Name6")),
Name7 = s.Sum(v => v.Field<string>("Name7"))
};