在项目中经常用到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。DataSet相关信息,可见我以前的一篇文章《数据访问(2)-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;
        }

转载于:https://www.cnblogs.com/shangxia/articles/2261367.html

转载:DataTable使用技巧总结相关推荐

  1. 【转载】心得技巧大全:UDer必看50点精华

    [转载]心得技巧大全:UDer必看50点精华   http://games.sina.com.cn 新浪游戏 我要投稿 文章作者:algidity 个人文集 发表时间:2007-03-30 UC/QQ ...

  2. [转载]datatable中只取前7条数据

      DataTable dt1 = new DataTable();             //然后通过sql语句绑定到dt             DataTable dt2 = new Data ...

  3. Datatable 使用技巧

    1.增加新列 有时候数据库存储的是对应项的数字代号,而要在页面上显示数字对应的文字,可以在页面上使用脚本进行转换,但是,一般将这些处理放在业务逻辑层,以便于将数据作其他使用,例如生成报表等,即对数据库 ...

  4. 转载:编剧技巧思路乱谈

    http://hgs521.com/html/dongmanjiaocheng/juben/20080130/41.html 编剧技巧思路乱谈 经常有朋友感到没有故事好写,或者在一个故事上苦苦思索,最 ...

  5. (转载)[MySQL技巧]INSERT INTO… ON DUPLICATE KEY UPDATE

    (转载)http://blog.zol.com.cn/2299/article_2298921.html MySQL 自4.1版以后开始支持INSERT - ON DUPLICATE KEY UPDA ...

  6. 转载:js技巧收集(200多个)

    1.文本框焦点问题 onBlur:当失去输入焦点后产生该事件 onFocus:当输入获得焦点后,产生该文件 Onchange:当文字值改变时,产生该事件 Onselect:当文字加亮后,产生该文件 & ...

  7. 如何让matlab提速,[转载]matlab提速技巧(自matlab帮助文件)

    1.首先要学会用profiler.1.1. 打开profiler. To open the Profiler, select View -> Profiler from the MATLAB d ...

  8. c# datatable用法总结

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

  9. 对DataTable的一些解释

    最经做导入导出Excel时,经常操作DataTable,DataSet,就按自己的需求对他们的一些常用的东西进行了一下总结. 一.DataTable简介 (1)构造函数            Data ...

最新文章

  1. python画-用Python画一颗特别的心送给她
  2. python与excel做数据可视化-python操作Excel、读取CVS与数据可视化
  3. qmail+rt+dns+apache
  4. 动态刷新_iPhone 12:120Hz动态刷新屏幕加持!iPhone X无奈价崩
  5. VS 编程常见错误及解决方法
  6. Tensorflow生成自己的图片数据集TFrecords(支持多标签label)
  7. Linux环境下安装RocketMQ(MetaQ)
  8. Oracle 随机获取N条数据
  9. Xcodebuild自动打包
  10. 2014-11-25nbsp;11:26
  11. 海南橡胶机器人成本_「图说」海垦看点:海南橡胶联合北京理工华汇智能科技首创我国林间智能割胶机器人...
  12. macos实现输入文件输入结束符
  13. Hibernate第十一篇【配置C3P0数据库连接池、线程Session】
  14. Atitit.js this错误指向window的解决方案
  15. Java讲课笔记04:变量与常量
  16. HIT Software Construction Review Notes(1-2 Quality Objectives of Software Construction)
  17. UVA583 UVALive5406 Prime Factors【素数因子+筛选法】
  18. Unity3D内容加密保护
  19. Matlab深度学习——入门
  20. 从混沌熬到风口:移动FM的五年之争

热门文章

  1. Just write about
  2. 《实施Cisco统一通信管理器(CIPT1)》一2.8 复习题
  3. Web Hacking 101 中文版 十七、服务端请求伪造
  4. [摘自MSDN] ASP.Net2.0学习 [1] 母版页 2 : 创建和使用 ASP.NET 母版页
  5. 静态链表和动态链表 区别
  6. Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
  7. Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since
  8. 菜鸟教程-css学习笔记
  9. Jacobian vector products(转载+翻译+代码+解读)
  10. codeblocks调试窗口字体大小以及修改主题