datatable数据类型方法

      
本文章已收录于:

Datatable数据类型介绍

简介:

这里介绍个在开发中经常用到的数据类型,数据类型为datatable。从数据库中查出的数据存放在datatable,但是很多情况下需要对查出的数据处理,这就需要积累些datatable方法,这样开发会更快。

方法介绍

用法一、声明一个datatable类型

通过声明自己创建一个datatable类型,并填充数据

  1. DataTable dt = newDataTable();  
  2.   
  3.          dt.Columns.Add("Username");  
  4.   
  5.          dt.Columns.Add("Level"typeof(int));  
  6.   
  7.   
  8.   
  9.          dt.Rows.Add("John", 1);  
  10.   
  11.          dt.Rows.Add("Cait", 2);  
  DataTable dt = newDataTable();

           dt.Columns.Add("Username");

           dt.Columns.Add("Level", typeof(int));

 

           dt.Rows.Add("John", 1);

           dt.Rows.Add("Cait", 2);


如果datatable已经存在了创建一个同结构的

  1. DataTable dtNew = dt.Clone();  
DataTable dtNew = dt.Clone();

带着数据:

 

  1. DataTable dtNew = dt.Copy();  

 DataTable dtNew = dt.Copy();

用法二、合并两个结构相同的datatable

有的时候是分批来的要一起显示到通过控件中(比如gridview控件)

直接合两个表格

  1. DataTable dt1 = newDataTable();  
  2.   
  3. DataTable dt2 = newDataTable();  
  4.   
  5. dt1.Merge(dt2);  
  DataTable dt1 = newDataTable();

  DataTable dt2 = newDataTable();

  dt1.Merge(dt2);


但有的时候需要经过遍历按照条件把一个表中的某些行添加到另一张表中

  1. foreach (DataRow dr in dt1.Rows)  
  2.   
  3.             {  
  4.   
  5.                 if (Convert.ToInt32(dr["Level"] )== 1)  
  6.   
  7.                 {  
  8.   
  9.                    dt2.Rows.Add(dr.ItemArray);  
  10.   
  11.                 }  
  12.   
  13.             }  
foreach (DataRow dr in dt1.Rows)

            {

                if (Convert.ToInt32(dr["Level"] )== 1)

                {

                   dt2.Rows.Add(dr.ItemArray);

                }

            }

用法三、datatable中数据的计算

有的时候需要对datatable中的数据进行计算,比如

聚合计算:

  1. DateTime StartTime = Convert.ToDateTime((dt.Compute("min(DateMonth)"string.Empty)));  
  2.   
  3. DateTime EndTime = Convert.ToDateTime((dt.Compute("max(DateMonth)"string.Empty)));  
DateTime StartTime = Convert.ToDateTime((dt.Compute("min(DateMonth)", string.Empty)));

DateTime EndTime = Convert.ToDateTime((dt.Compute("max(DateMonth)", string.Empty)));

这里是对时间类型类进行聚合得到最大时间和最小时间。

数据行过滤:

  1. DataTable dt = newDataTable();  
  2.   
  3.  dt.Columns.AddRange(newDataColumn[] { newDataColumn("name"typeof(string)),  
  4.   
  5.                                          newDataColumn("sex"typeof(string)),  
  6.   
  7.                                          newDataColumn("score"typeof(int))  
  8.   
  9. });  
  10.   
  11.            dt.Rows.Add(newobject[] { "李四""男", 20 });  
  12.   
  13.            dt.Rows.Add(newobject[] { "张三""男", 1 });  
  14.   
  15.            dt.Rows.Add(newobject[] { "张三""男", 4 });  
  16.   
  17.            dt.Rows.Add(newobject[] { "李四""男", 100 });  
  18.   
  19.            dt.Rows.Add(newobject[] { "李四""女", 90 });  
  20.   
  21.            dt.Rows.Add(newobject[] { "王五""女", 77 });  
DataTable dt = newDataTable();

 dt.Columns.AddRange(newDataColumn[] { newDataColumn("name", typeof(string)),

                                         newDataColumn("sex", typeof(string)),

                                         newDataColumn("score", typeof(int))

});

           dt.Rows.Add(newobject[] { "李四", "男", 20 });

           dt.Rows.Add(newobject[] { "张三", "男", 1 });

           dt.Rows.Add(newobject[] { "张三", "男", 4 });

           dt.Rows.Add(newobject[] { "李四", "男", 100 });

           dt.Rows.Add(newobject[] { "李四", "女", 90 });

           dt.Rows.Add(newobject[] { "王五", "女", 77 });


数据过滤的到行,

  1. for (int i = 0; i < dtName.Rows.Count; i++)  
  2.   
  3.             {  
  4.   
  5.                 DataRow[] rows = dt.Select("name=李四");  
  6.   
  7. }  
for (int i = 0; i < dtName.Rows.Count; i++)

            {

                DataRow[] rows = dt.Select("name=李四");

}

数据列过滤

  1. DataTable dtName = dt.DefaultView.ToTable(true"name""sex");  
DataTable dtName = dt.DefaultView.ToTable(true, "name", "sex");

用法四:两种遍历datatable的方法

  1. foreach (DataRow dr in dt2.Rows)  
  2.   
  3.             {  
  4.   
  5.                 Console.Write(dr["Username"]);  
  6.   
  7.                 Console.Write(dr["Level"]);  
  8.   
  9.                 Console.WriteLine();            
  10.   
  11.    
  12.   
  13.             }  
foreach (DataRow dr in dt2.Rows)

            {

                Console.Write(dr["Username"]);

                Console.Write(dr["Level"]);

                Console.WriteLine();          

 

            }

  1. for (int i = 0; i < dt1.Rows.Count; i++)  
  2.   
  3.             {  
  4.   
  5.                dt1[i][""]  
  6.   
  7.             }  
for (int i = 0; i < dt1.Rows.Count; i++)

            {

               dt1[i][""]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值