var q=from t in Tb2s
 group t by new
{
t.A,
t.B
}
into g
select new
{
g.Key.A,
g.Key.B,
    g
};
foreach(var p in q)
{
  string c=string.Empty;
  foreach(var s in p.g)//合并C列
   {
    c+=s.C;
   }
   Console.WriteLine(p.A+"\t"+p.B+"\t"+c);//合并后的行数据,再用DataTable处理。
}
/*
a b cd
c d ab
*/

解决方案 »

  1.   

     foreach(var s in p.g)//合并C列
       {
        c+=s.C;
       }
    这一部能一起放在linq里面做吗?
    var q=from t in Tb2s
     group t by new
        {
            t.A,
            t.B
        }
    into g
    select new
    {
        g.Key.A,
        g.Key.B,
        g
    };
    这样子的我写出来了,就是最后这个select new
    {
        g.Key.A,
        g.Key.B,
        g
    };的第三个g这里写不出
      

  2.   

    foreach(var s in p.g)//合并C列
       {
        c+=s.C;
       }这一部能一起放在linq里面做吗?
    -------
    MS不行,C列是字符串,如果是数字倒可以用sum等函数来聚合
    不是要根据分组合并行数据??