DataTable根据类型求和.DataTable Linq

 

最近在做一个项目时,要写到一个这样的方法。根据一个DataTable。 如果它的其中一列是INT或FLOAT之类的话。则要求合。

 

下面写一下, 

ContractedBlock.gif ExpandedBlockStart.gif Code
DataTable table = new DataTable();
         table.Columns.Add(
"IntColumn"typeof(int));
         table.Columns.Add(
"StringColumn"typeof(string));
         table.Columns.Add(
"DateTimeColumn"typeof(DateTime));

         table.Rows.Add(
1"第1行", DateTime.Now);
         table.Rows.Add(
2"第2行", DateTime.Now);
         table.Rows.Add(
3"第3行", DateTime.Now);
         table.Rows.Add(
4"第4行", DateTime.Now);
         table.Rows.Add(
5"第5行", DateTime.Now);
         table.Rows.Add(
6"第6行", DateTime.Now);

         Dictionary
<stringstring> numericColumns = new Dictionary<stringstring>();
         
foreach (DataColumn column in table.Columns)
         {
            
if (column.DataType == typeof(int))
            {
               
string sumName = string.Format("Sum({0})", column.ColumnName);

               numericColumns.Add(sumName, 
string.Format("Sum({0})", column.ColumnName));

            }
         }

         
foreach (string key in numericColumns.Keys)
         {
            table.Columns.Add(key, 
typeof(int), numericColumns[key]);
         }
         table.AcceptChanges();
         
//Print Table
         foreach (DataRow row in table.Rows)
         {
            
foreach (DataColumn column in table.Columns)
            {
               Console.Write(
"{0}    ", row[column]);

            }
            Console.Write(
"\r\n");
         }


结果
1    第1行    2009/11/23 10:49:27    21
2    第2行    2009/11/23 10:49:27    21
3    第3行    2009/11/23 10:49:27    21
4    第4行    2009/11/23 10:49:27    21
5    第5行    2009/11/23 10:49:27    21
6    第6行    2009/11/23 10:49:27    21

 

今天在写一个DATATABLE时。居然没想到用LINQ。

下面是DataTable的Linq化

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
IEnumerable <DataRow> rows = dt.Rows.OfType <DataRow>(); 
rows.GroupBy(a 
=> a["A"].ToString()).Select(a => new 

    A 
= a.First()["A"].ToString(), 
percent 
= a.Count() / dt.Rows.Count 
}); 


var query 
= from dt in dv1.Table.AsEnumerable() 
                            group dt by dt.Field 
<string>("类别"); 
                
foreach (var dd in query) 
                { 
                    combox1.Items.Add(dd.Key); 
                } 

 

 

 

 

转载于:https://www.cnblogs.com/z2002m/archive/2009/11/23/1609064.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值