c#用datatable实现groupby数据统计

上传人:xiao****1972 文档编号:84136496 上传时间:2019-03-02 格式:DOCX 页数:3 大小:18.64KB
返回 下载 相关 举报
c#用datatable实现groupby数据统计_第1页
第1页 / 共3页
c#用datatable实现groupby数据统计_第2页
第2页 / 共3页
c#用datatable实现groupby数据统计_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《c#用datatable实现groupby数据统计》由会员分享,可在线阅读,更多相关《c#用datatable实现groupby数据统计(3页珍藏版)》请在金锄头文库上搜索。

1、C#用DataTable实现Group by数据统计 2013-04-04 00:53 471人阅读 评论(0) 收藏 举报 1、用两层循环计算,前提条件是数据已经按分组的列排好序的。DataTable dt = new DataTable(); dt.Columns.AddRange( new DataColumn new DataColumn( name , typeof ( string ),new DataColumn( sex , typeof ( string ), new DataColumn( score , typeof ( int ) ); dt.Rows.Add( new

2、 object 张三 , 男 , 1 ); dt.Rows.Add( new object 张三 , 男 , 4 ); dt.Rows.Add( new object 李四 , 男 , 100 ); dt.Rows.Add( new object 李四 , 女 , 90 ); dt.Rows.Add( new object 王五 , 女 , 77 ); DataTable dtResult = dt.Clone(); for ( int i = 0 ; i dt.Rows.Count; ) DataRow dr = dtResult.NewRow(); string name = dt.Row

3、si name .ToString();string sex = dt.Rowsi sex .ToString(); dr name = name;dr sex = sex; int score = 0 ; / 内层也是循环同一个表,当遇到不同的name时跳出内层循环 for (; i dt.Rows.Count; ) if (name = dt.Rowsi name .ToString()& name = dt.Rowsi sex .ToString() ) score += Convert.ToInt32(dt.Rowsi score ); dr score = score; i+; el

4、se break ; dtResult.Rows.Add(dr); dtResult中的数据即是最终结果。 2、 借助DataTable的Compute方法,DataTable中数据不用事先排好序。DataTable dt = new DataTable(); dt.Columns.AddRange( new DataColumn new DataColumn( name , typeof ( string ), new DataColumn( sex , typeof ( string ), new DataColumn( score , typeof ( int ) ); dt.Rows.

5、Add( new object 张三 , 男 , 1 ); dt.Rows.Add( new object 张三 , 男 , 4 ); dt.Rows.Add( new object 李四 , 男 , 100 ); dt.Rows.Add( new object 李四 , 女 , 90 ); dt.Rows.Add( new object 王五 , 女 , 77 ); DataTable dtResult = dt.Clone(); DataTable dtName = dt.DefaultView.ToTable( true , name , sex ); for ( int i = 0 ;

6、 i dtName.Rows.Count; i+) DataRow rows = dt.Select( name= + dtName.Rowsi 0 + and sex= + dtName.Rowsi1 + ); / temp用来存储筛选出来的数据 DataTable temp = dtResult.Clone(); foreach (DataRow row in rows) temp.Rows.Add(row.ItemArray); DataRow dr = dtResult.NewRow(); dr 0 = dtName.Rowsi 0 .ToString(); dr 1 = temp.C

7、ompute( sum(score) , ); dtResult.Rows.Add(dr); 3、使用linq to DataTable group by实现var query = from t in dt.AsEnumerable() group t by new t1 = t.Field( name ), t2 = t.Field( sex ) into m select new name = m.Key.t1, sex = m.Key.t2, score = m.Sum(n = n.Field( score ) ; if (query.ToList().Count 0 ) query.ToList().ForEach(q = Console.WriteLine(q.name + , + q.sex + , + q.score); );

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号