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

linQ如何合并同一列的数据
现在有一张表
 FROM    TO      TIME      BODY
     A         B       11/11       1111
     A         B       11/11       2222
     A         B       11/12       3333
     A         B       11/12       4444

怎么样才能得出
FROM    TO    NUM    TIME           BODY
     A         B        2      11/11       1111,2222
     A         B        2      11/12       3333,4444

这样的结果呢=. =

LinQ里面group后面好像只能写一个字段...还不能合并列的内容..
------最佳解决方案--------------------
var query=db.YourTable.ToList().GroupBy(t=>new{t.FROM,t.To,t.Time})
            .Select(g=>new {FROM=g.Key.From,TO=g.Key.To,NUM=g.Count(),Time=g.Key.Time,Body=string.Join(",",g.Select(s=>s.Body).ToArray())})
------其他解决方案--------------------
本帖最后由 q107770540 于 2012-11-09 10:58:51 编辑
var query=db.YourTable.GroupBy(t=>new{t.FROM,t.To,t.Time})
            .Select(g=>new {FROM=g.Key.From,TO=g.Key.To,NUM=g.Count(),Time=g.Key.Time,Body=string.Join(",",g.Select(s=>s.Body).ToArray())})

------其他解决方案--------------------
VB.NET与C#的写法区别,参考我的另一篇blog:
http://blog.csdn.net/q107770540/article/details/7629681
------其他解决方案--------------------
引用:
本帖最后由 q107770540 于 2012-11-09 10:58:51 编辑
            Body=string.Join(",",g.Select(s=>s.Body).ToArray())

=. =他说不识别string join 的方法
base {System.SystemException} = {"LINQ to Entities 不识别方法“System.String Join(System.String, System.String[])”,因此该方法无法转换为存储表达式。"}
------其他解决方案--------------------
引用:
var query=db.YourTable.ToList().GroupBy(t=>new{t.FROM,t.To,t.Time})
            .Select(g=>new {FROM=g.Key.From,TO=g.Key.To,NUM=g.Count(),Time=g.Key.Time,Body=string.Join(",",g.Select(s=……


我弱爆了.....