***************************************************

更多精彩,欢迎进入:http://shop115376623.taobao.com

***************************************************

DataTable 是一个临时保存数据的网格虚拟表(表示内存中数据的一个表。)。DataTable是ADO dot net 库中的核心对象。它可以被应用在 VB 和 ASP 上。它无须代码就可以简单的绑定数据库。它具有微软风格的用户界面。

  其他使用DataTable的对象包括DataSet和DataView。

注意

  当访问DataTable对象时,请注意它们是按条件区分大小写的。例如,如果一个DataTable被命名为“mydatatable”,另一个被命名为“Mydatatable”,则用于搜索其中一个表的字符串被认为是区分大小写的。但是,如果“mydatatable”存在而“Mydatatable”不存在,则认为该搜索字符串不区分大小写。一个DataSet可以包含数个DataTable对象,它们具有相同的TableName属性值和不同的Namespace属性值。有关使用DataTable对象的更多信息。

在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。

一、DataTable简介

(1)构造函数 
          DataTable()   不带参数初始化DataTable 类的新实例。 
          DataTable(string tableName)  用指定的表名初始化DataTable 类的新实例。 
          DataTable(string tableName, string tableNamespace) 用指定的表名和命名空间初始化DataTable类的新实例。

(2) 常用属性 
          CaseSensitive    指示表中的字符串比较是否区分大小写。 
          ChildRelations   获取此DataTable 的子关系的集合。 
          Columns             获取属于该表的列的集合。 
          Constraints        获取由该表维护的约束的集合。 
          DataSet               获取此表所属的DataSet。 
          DefaultView       获取可能包括筛选视图或游标位置的表的自定义视图。 
          HasErrors          获取一个值,该值指示该表所属的DataSet 的任何表的任何行中是否有错误。 
          MinimumCapacity  获取或设置该表最初的起始大小。该表中行的最初起始大小。默认值为 50。 
          Rows                  获取属于该表的行的集合。 
          TableName       获取或设置DataTable 的名称。

(3)常用方法 
          AcceptChanges()   提交自上次调用AcceptChanges() 以来对该表进行的所有更改。 
          BeginInit()         开始初始化在窗体上使用或由另一个组件使用的DataTable。初始化发生在运行时。

Clear()               清除所有数据的DataTable。 
          Clone()              克隆DataTable 的结构,包括所有DataTable 架构和约束。 
          EndInit()            结束在窗体上使用或由另一个组件使用的DataTable 的初始化。初始化发生在运行时。 
          ImportRow(DataRow row)    将DataRow 复制到DataTable 中,保留任何属性设置以及初始值和当前值。 
          Merge(DataTable table)  将指定的DataTable 与当前的DataTable 合并。 
          NewRow()         创建与该表具有相同架构的新DataRow。
 
        二、DataTable使用技巧

(1)Create a DataTable
         DataTable dt = new DataTable("Table_AX");

(2)Add columns for DataTable
        //Method 1
        dt.Columns.Add("column0", System.Type.GetType("System.String"));
        //Method 2
        DataColumn dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));
        dt.Columns.Add(dc);

(3)Add rows for DataTable
         //Initialize the row
         DataRow dr = dt.NewRow();
         dr["column0"] = "AX";
         dr["column1"] = true;
         dt.Rows.Add(dr);
         //Doesn't initialize the row
         DataRow dr1 = dt.NewRow();
         dt.Rows.Add(dr1);

(4)Select row
         //Search the second row 如果没有赋值,则用is null来select
         DataRow[] drs = dt.Select("column1 is null");
         DataRow[] drss = dt.Select("column0 = 'AX'");

(5)Copy DataTable include data
         DataTable dtNew = dt.Copy();

(6)Copy DataTable only scheme
         DataTable dtOnlyScheme = dt.Clone();

(7)Operate one row
         //对dt的操作
         //Method 1
         DataRow drOperate = dt.Rows[0];
         drOperate["column0"] = "AXzhz";
         drOperate["column1"] = false;
         //Method 2
         drOperate[0] = "AXzhz";
         drOperate[1] = false;
         //Method 3
         dt.Rows[0]["column0"] = "AXzhz";
         dt.Rows[0]["column1"] = false;
         //Method 4
         dt.Rows[0][0] = "AXzhz";
         dt.Rows[0][1] = false;

(8)Evaluate another DataTable's row to current Datatable
         dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);

(9)Convert to string
         System.IO.StringWriter sw = new System.IO.StringWriter();
         System.Xml.XmlTextWriter xw = new System.Xml.XmlTextWriter(sw);
         dt.WriteXml(xw);
         string s = sw.ToString();

(10)Filter DataTable
         dt.DefaultView.RowFilter = "column1 <> true";
         dt.DefaultView.RowFilter = "column1 = true";

(11)Sort row
          dt.DefaultView.Sort = "ID ,Name ASC";
          dt=dt.DefaultView.ToTable();

(12)Bind DataTable
           //绑定的其实是DefaultView
          gvTestDataTable.DataSource = dt;
          gvTestDataTable.DataBind();

(13)judge the DataTable’s Column name is a string
          //判断一个字符串是否为DataTable的列名
         dtInfo.Columns.Contains("AX");

(14)DataTable convert to XML and XML convert to DataTable
          protected void Page_Load(object sender, EventArgs e)
          {
             DataTable dt_AX = new DataTable();
             //dt_AX.Columns.Add("Sex", typeof(System.Boolean));
             //DataRow dr = dt_AX.NewRow();
             //dr["Sex"] = true;
             //dt_AX.Rows.Add(dr);
             string xml=ConvertBetweenDataTableAndXML_AX(dt_AX);
             DataTable dt = ConvertBetweenDataTableAndXML_AX(xml);
         }
         public string ConvertBetweenDataTableAndXML_AX(DataTable dtNeedCoveret)
        {
             System.IO.TextWriter tw = new System.IO.StringWriter();
             //if TableName is empty, WriteXml() will throw Exception.

dtNeedCoveret.TableName=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName;
             dtNeedCoveret.WriteXml(tw);
             dtNeedCoveret.WriteXmlSchema(tw);
             return tw.ToString();
        }
         public DataTable ConvertBetweenDataTableAndXML_AX(string xml)
        {
             System.IO.TextReader trDataTable = new System.IO.StringReader(xml.Substring(0, xml.IndexOf("<?xml")));
             System.IO.TextReader trSchema = new System.IO.StringReader(xml.Substring(xml.IndexOf("<?xml")));
             DataTable dtReturn = new DataTable();
             dtReturn.ReadXmlSchema(trSchema);
             dtReturn.ReadXml(trDataTable);
             return dtReturn;
        }

C# DataTable的詳細用法相关推荐

  1. C# DataTable的詳細使用方法

    在项目中经经常使用到DataTable,假设DataTable使用得当,不仅能使程序简洁有用,并且可以提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTabl ...

  2. telnet/ftp/netstat/ping命令詳細介紹

     很多朋友问到telnet/ftp/netstat/ping 命令的使用方法 今天我就抽点时间做个telnet/ftp/netstat/ping 命令一詳細介紹! 请入门者静下心来.......... ...

  3. Jyutping(粵拼)詳細教程

    <香港語言學學會粵語拼音方案> ── 一個簡單又專業的粵語羅馬拼音方案 香港語言學學會在1993年設計和公佈了<香港語言學學會粵語拼音方案>(簡稱<粵拼>).< ...

  4. 我的世界java堆肥桶配方,堆肥桶 - Minecraft Wiki,最詳細的官方Minecraft百科

    堆肥桶 開採工具 可堆疊 是(64) 可燃盡 是(5) 可被熔岩點燃 是 composter 堆肥桶(Composter)可用於將作物和植物轉化成骨粉.它也可以充當農夫村民的工作站點方塊. 方塊 堆肥 ...

  5. C# DataSet与DataTable的区别和用法

    DataSet是数据集,DataTable是数据表,DataSet存储多个DataTable.DataSet和DataTable像是专门存储数据的一个容器,在你查询数据库得到一些结果时可以存在里面. ...

  6. 集合詳細學習 包括Vector ArrayList List等等的比較與實例

    原貼地址:http://blog.csdn.net/donkeyzheng/archive/2006/03/16/626489.aspx 集合: Vector的方法都是同步的(Synchronized ...

  7. C#中Datatable的Compute的用法(转载)

    DataTable dt = new DataTable(); //嵌套的三元运算(iif判断)object obj = dt.Compute("iif(1000=5,1000,iif(10 ...

  8. php中var_dump是什么意思,php中的var_dump()方法的詳細說明

    首先看看實例: $a = "alsdflasdf;a"; $b = var_dump($a); echo " "; //var_dump($c); $d=var ...

  9. hive臨時udf與永久udf詳細操作流程

    ①完整代碼 ②打包操作 ③創建UDF有兩種. 臨時性的是你關閉beeline以後下次登錄還要再註冊一遍的. 永久性的是你關閉beeline以後下次登錄不用再註冊一遍的. 創建UDF方式  具體操作步驟 ...

最新文章

  1. java 折半插入排序_[Java代码] Java实现直接插入排序和折半插入排序算法示例
  2. 华为服务器引入清空外部配置文件,云服务器还原配置文件
  3. 一篇文章让你真正了解Java
  4. 创智播客 大数据_中国电信启动嘉创智谷——新仓远景产业园5G部署
  5. [云炬创业基础笔记]第十一章创业计划书测试6
  6. 科大星云诗社动态20210429
  7. vs2010下使用dmp文件和pdb文件调试时dump、exe和pdb三个文件要保持版本一致的原因
  8. 如何兼容自训练与预训练:更高效的半监督文本分类模型
  9. Java黑皮书课后题第2章:2.11(人口统计)重写编程练习题1.11,提示用户输入年数,然后显示这个年数之后的人口值,将1.11中的提示用于这个程序
  10. 作者:聂敏,男,电子科技大学教育大数据研究所博士生。
  11. asp.net实现bt和pt—tracker request
  12. Solr基础教程之solrconfig.xml(三)
  13. 团队作业4——第一次项目冲刺 FiRsT DaY
  14. 究竟先操作缓存,还是数据库?
  15. 【C语言】 扫雷游戏(保姆级的实现过程)
  16. COMSOL有限元仿真深度指南:构建与管理自定义材料库
  17. mysql 内连接与外连接的区别
  18. winform安装包签名
  19. ec6108v9c短接j15_华为悦盒EC6108V9C变砖头,J16强刷不出现机器人,重点介绍解决问题!...
  20. 腾讯云CDN加速COS图床

热门文章

  1. HTTP 协议是无状态协议,怎么理解
  2. 写给大数据开发初学者的话2
  3. 1566:基础练习 十六进制转八进制
  4. EcmaScript对象克隆之谜
  5. CentOS 6.9下的Setup工具(用于管理服务/防火墙/网络配置/验证服务)
  6. [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程2
  7. js/jquery循环提取table单元格值
  8. centos 6.5 安装 mongodb
  9. kv存储对抗关系型数据库
  10. servlet中实现页面跳转return “r:”和return “f: