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

一、DataTable简介

(1)构造函数

Ø         DataTable()不带参数初始化DataTable类的新实例。

Ø         DataTable(stringtableName)用指定的表名初始化DataTable类的新实例。

Ø         DataTable(stringtableName,stringtableNamespace)用指定的表名和命名空间初始化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(DataRowrow)将DataRow复制到DataTable中,保留任何属性设置以及初始值和当前值。

Ø         Merge(DataTabletable)将指定的DataTable与当前的DataTable合并。

Ø         NewRow()创建与该表具有相同架构的新DataRow。

二、DataTable使用技巧

(1)CreateaDataTable

DataTabledt=newDataTable("Table_AX");

(2)AddcolumnsforDataTable

//Method1

dt.Columns.Add("column0",System.Type.GetType("System.String"));

//Method2

DataColumndc=newDataColumn("column1",System.Type.GetType("System.Boolean"));

dt.Columns.Add(dc);

(3)AddrowsforDataTable

//Initializetherow

DataRowdr=dt.NewRow();

dr["column0"]="AX";

dr["column1"]=true;

dt.Rows.Add(dr);

//Doesn'tinitializetherow

DataRowdr1=dt.NewRow();

dt.Rows.Add(dr1);

(4)Selectrow

//Searchthesecondrow如果没有赋值,则用isnull来select

DataRow[]drs=dt.Select("column1isnull");

DataRow[]drss=dt.Select("column0='AX'");

(5)CopyDataTableincludedata

DataTabledtNew=dt.Copy();

(6)CopyDataTableonlyscheme

DataTabledtOnlyScheme=dt.Clone();

(7)Operateonerow

//对dt的操作

//Method1

DataRowdrOperate=dt.Rows[0];

drOperate["column0"]="AXzhz";

drOperate["column1"]=false;

//Method2

drOperate[0]="AXzhz";

drOperate[1]=false;

//Method3

dt.Rows[0]["column0"]="AXzhz";

dt.Rows[0]["column1"]=false;

//Method4

dt.Rows[0][0]="AXzhz";

dt.Rows[0][1]=false;

(8)EvaluateanotherDataTable'srowtocurrentDatatable

dtOnlyScheme.Rows.Add(dt.Rows[0].ItemArray);

(9)Converttostring

System.IO.StringWritersw=newSystem.IO.StringWriter();

System.Xml.XmlTextWriterxw=newSystem.Xml.XmlTextWriter(sw);

dt.WriteXml(xw);

strings=sw.ToString();

(10)FilterDataTable

dt.DefaultView.RowFilter="column1<>true";

dt.DefaultView.RowFilter="column1=true";

(11)Sortrow

dt.DefaultView.Sort="ID,NameASC";

dt=dt.DefaultView.ToTable();

(12)BindDataTable

//绑定的其实是DefaultView

gvTestDataTable.DataSource=dt;

gvTestDataTable.DataBind();

(13)judgetheDataTable’sColumnnameisastring

//判断一个字符串是否为DataTable的列名

dtInfo.Columns.Contains("AX");

(14)DataTableconverttoXMLandXMLconverttoDataTable

protectedvoidPage_Load(objectsender,EventArgse)

DataTabledt_AX=newDataTable();

//dt_AX.Columns.Add("Sex",typeof(System.Boolean));

//DataRowdr=dt_AX.NewRow();

//dr["Sex"]=true;

//dt_AX.Rows.Add(dr);

stringxml=ConvertBetweenDataTableAndXML_AX(dt_AX);

DataTabledt=ConvertBetweenDataTableAndXML_AX(xml);

}

publicstringConvertBetweenDataTableAndXML_AX(DataTabledtNeedCoveret)

{

System.IO.TextWritertw=newSystem.IO.StringWriter();

//ifTableNameisempty,WriteXml()willthrowException.

dtNeedCoveret.TableName=dtNeedCoveret.TableName.Length==0?"Table_AX":dtNeedCoveret.TableName;

dtNeedCoveret.WriteXml(tw);

dtNeedCoveret.WriteXmlSchema(tw);

returntw.ToString();

}

publicDataTableConvertBetweenDataTableAndXML_AX(stringxml)

{

System.IO.TextReadertrDataTable=newSystem.IO.StringReader(xml.Substring(0,xml.IndexOf("<?xml")));

System.IO.TextReadertrSchema=newSystem.IO.StringReader(xml.Substring(xml.IndexOf("<?xml")));

DataTabledtReturn=newDataTable();

dtReturn.ReadXmlSchema(trSchema);

dtReturn.ReadXml(trDataTable);

returndtReturn;

}

C#中DataTable使用技巧的更多相关文章

  1. DataTable使用技巧总结【转】

    一.DataTable简介 ()构造函数 DataTable() 不带参数初始化DataTable 类的新实例. DataTable(string tableName) 用指定的表名初始化DataTa ...

  2. (转载)DataTable使用技巧总结

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

  3. C# 中 DataTable 使用详解。

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

  4. ios开发中的小技巧

    在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...

  5. C#中DataTable中的Compute方法使用收集

    原文: C#中DataTable中的Compute方法使用收集 Compute函数的参数就两个:Expression,和Filter. Expresstion是计算表达式,关于Expression的详 ...

  6. 背水一战 Windows 10 (21) - 绑定: x:Bind 绑定, x:Bind 绑定之 x:Phase, 使用绑定过程中的一些技巧

    [源码下载] 背水一战 Windows 10 (21) - 绑定: x:Bind 绑定, x:Bind 绑定之 x:Phase, 使用绑定过程中的一些技巧 作者:webabcd 介绍背水一战 Wind ...

  7. 绑定: x:Bind 绑定, x:Bind 绑定之 x:Phase, 使用绑定过程中的一些技巧

    背水一战 Windows 10 之 绑定 x:Bind 绑定 x:Bind 绑定之 x:Phase 使用绑定过程中的一些技巧 示例1.演示 x:Bind 绑定的相关知识点Bind/BindDemo.x ...

  8. C#中DataTable排序、检索、合并等操作实例

    转载引用至:http://www.jb51.net/article/49222.htm     一.排序1.获取DataTable的默认视图2.对视图设置排序表达式3.用排序后的视图导出的新DataT ...

  9. iOS开发中调试小技巧

    对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...

随机推荐

  1. top对僵尸进程的处理

    ps        --forest        ASCII art process tree 2 怎样来清除僵尸进程:    1.改写父进程,在子进程死后要为它收尸.具体做法是接管SIGCHLD信 ...

  2. 应用 JD-Eclipse 插件实现 RFT 中 .class 文件的反向编译

    概述 反编译是一个将目标代码转换成源代码的过程.而目标代码是一种用语言表示的代码 , 这种语言能通过实机或虚拟机直接执行.文本所要介绍的 JD-Eclipse 是一款反编译的开源软件,它是应用于 Ec ...

  3. STM32canopen调试

    问题1:用usbcan监测不到can口的报文 属于接线问题 CANopen程序总使用的是can1 对应的接下口在J1的1和2口,而其接口排序是从外向里排序,故最外面的为1号接口,由于接线时,按照左边的 ...

  4. 【leetcode】Letter Combinations of a Phone Number

    Letter Combinations of a Phone Number Given a digit string, return all possible letter combinations ...

  5. MySQL自带information_schema数据库使用

    MySQL的information_schema数据库是什么,有什么作用? 大家在安装或使用MYSQL时,会发现除了自己安装的数据库以外,还有一个 information_schema数据库.info ...

  6. 利用FFmpeg生成视频缩略图 2.3.1

    1.下载FFmpeg文件包,解压包里的\bin\下的文件解压到 D:\ffmpeg\ 目录下. 下载地址 http://ffmpeg.zeranoe.com/builds/win32/static/ ...

  7. Java for LeetCode 059 Spiral Matrix II

    Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...

  8. July 27th, Week 31st Wednesday, 2016

    Don't let yesterday take up too much of today. 别让昨天的事情占据今天太多时间. Learn from yesterday, but don't let ...

  9. java基础知识回顾之javaIO类总结

    java IO体系图 IO流的操作规律总结: 1,明确体系: 数据源:InputStream ,Reader 数据汇:OutputStream,Writer 2,明确数据:因为数据分两种:字节,字符. ...

  10. hrbustoj 1429:凸多边形(计算几何,判断点是否在多边形内,二分法)

    凸多边形 Time Limit: 2000 MS    Memory Limit: 65536 K Total Submit: 130(24 users)   Total Accepted: 40(1 ...