datatable 合并 数据

_小黑_ 2013-06-08 09:35:40
我 有 一个 dt 存的数据 是 这样的
name oid money
A 1 10
B 1 10
C 1 10
D 1 10
A 2 20
C 3 10

显示成
name oid money
A,B,C,D 1 40
A 2 20
C 3 10
...全文
88 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
_小黑_ 2013-06-08
  • 打赏
  • 举报
回复
引用 1 楼 Chinajiyong 的回复:

 DataTable dtable = new DataTable();
            dtable.Columns.Add("name",typeof(string));
            dtable.Columns.Add("oid", typeof(int));
            dtable.Columns.Add("money", typeof(int));
            dtable.Rows.Add(new object[] { "A", 1, 10 });
            dtable.Rows.Add(new object[] { "B", 1, 10 });
            dtable.Rows.Add(new object[] { "C", 1, 10 });
            dtable.Rows.Add(new object[] { "D", 1, 10 });
            dtable.Rows.Add(new object[] { "A", 2, 20 });
            dtable.Rows.Add(new object[] { "C", 3, 10 });

            var dtquery = from dt in dtable.AsEnumerable()
                          group dt by dt.Field<int>("oid") into g
                          select new
                              {
                                  name = String.Join(",", g.Select(x => x.Field<string>("name")).ToArray()),
                                  oid = g.Key,
                                  money = g.Sum(x => x.Field<int>("money"))

                              };

            foreach (var dd in dtquery)
            {
                Console.WriteLine(dd.name + "\t" + dd.oid + "\t" + dd.money);
            }
引用 2 楼 q107770540 的回复:
up 1 楼 用一楼的方式得到LIST后(最好不要用匿名类),用下边的方式转换成DataTable http://blog.csdn.net/q107770540/article/details/6556210
谢啦 已经 用 sql 解决了
q107770540 2013-06-08
  • 打赏
  • 举报
回复
up 1 楼 用一楼的方式得到LIST后(最好不要用匿名类),用下边的方式转换成DataTable http://blog.csdn.net/q107770540/article/details/6556210
EnForGrass 2013-06-08
  • 打赏
  • 举报
回复

 DataTable dtable = new DataTable();
            dtable.Columns.Add("name",typeof(string));
            dtable.Columns.Add("oid", typeof(int));
            dtable.Columns.Add("money", typeof(int));
            dtable.Rows.Add(new object[] { "A", 1, 10 });
            dtable.Rows.Add(new object[] { "B", 1, 10 });
            dtable.Rows.Add(new object[] { "C", 1, 10 });
            dtable.Rows.Add(new object[] { "D", 1, 10 });
            dtable.Rows.Add(new object[] { "A", 2, 20 });
            dtable.Rows.Add(new object[] { "C", 3, 10 });

            var dtquery = from dt in dtable.AsEnumerable()
                          group dt by dt.Field<int>("oid") into g
                          select new
                              {
                                  name = String.Join(",", g.Select(x => x.Field<string>("name")).ToArray()),
                                  oid = g.Key,
                                  money = g.Sum(x => x.Field<int>("money"))

                              };

            foreach (var dd in dtquery)
            {
                Console.WriteLine(dd.name + "\t" + dd.oid + "\t" + dd.money);
            }

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧