C# 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;

}

时间: 2025-01-03 19:58:38

C# DataTable详细用法的相关文章

AspNetPager 分页的详细用法(ASP.NET)

1.[添加AspNetPager.dll文件] 2.[使用方法] public static DataTable GetRecord(SystemModel.Pager mt, ref int TotalPage, ref int TotalRecord) { string sortType = mt.SortType == 1 ? " asc" : " desc"; //查询总条数 string _strCountSQL = "select count(

Display:Block 详细用法

根据CSS规范的规定,每一个网页元素都有一个display属性,用于确定该元素的类型,每一个元素都有默认的display属性值,比如div元素,它的默认display属性值为"block",成为"块级"元素(block-level):而span元素的默认display属性值为"inline",称为"行内"元素. 块级元素: 动占据一定矩形空间,可以通过设置高度.宽度.内外边距等属性,来调整的这个矩形的样子: 行内元素: 自己的

DOM Style样式对象的详细用法

DOM Style样式对象的详细用法 HTML Style样式比较复杂,相应访问.修改方法也有所差异.参考相关资料,整理如下. 典型Html文件如下,有三种定义方式. <head>     <style type="text/css">                /* 内部样式 */       h3 {color:green;}     </style>             <!-- 外部样式 style.css -->    

文件/目录权限设置命令chmod的详细用法

chmod是文件/目录权限设置的命令,在Linux中经常遇到,本博文以下总结chmod的详细用法. Linux/Unix的档案调用权限分为三级,即档案拥有者user.群组group.其他other.u表示该档案的拥有者,g表示与该档案的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是. + 表示增加权限.- 表示取消权限.= 表示唯一设定权限. r表示可读取,w表示可写入,x表示可执行. 举例说明: (1).将档案file1.txt 设为所有人皆可读取: chmod u

mysql中游标在存储过程中的详细用法

昨天写的一个东东,分享下给大家. drop PROCEDURE  if exists sp_cleanUserData; CREATE  PROCEDURE `sp_cleanUserData`() BEGIN /*定义游标*/ declare v_dt bigint(20) default 0 ; declare v_num INT DEFAULT 0; /*游标循环到末尾时给定义的常量赋值*/ declare cur_userId   CURSOR FOR select  userId fr

Linux中find、grep命令详细用法

在linux下面工作,有些命令能够大大提高效率.本文就向大家介绍find.grep命令,他哥俩可以算是必会的linux命令,我几乎每天都要用到他们.本文结构如下: find命令 find命令的一般形式 find命令的常用选项及实例 find与xargs grep命令 grep命令的一般形式 grep正则表达式元字符集(基本集) grep命令的常用选项及实例 1.find命令 find命令是一个无处不在命令,是linux中最有用的命令之一.find命令用于:在一个目录(及子目录)中搜索文件,你可以

SplitContainer 控件详细用法(转)

1.可以将 Windows 窗体 SplitContainer 控件看作是一个复合体,它是由一个可移动的拆分条分隔的两个面板.当鼠标指针悬停在该拆分条上时,指针将相应地改变形状以显示该拆分条是可移动的.使用 SplitContainer 控件,可以创建复合的用户界面(通常,在一个面板中的选择决定了在另一个面板中显示哪些对象).这种排列对于显示和浏览信息非常有用.拥有两个面板使您可以聚合不同区域中的信息,并且用户可以轻松地使用拆分条(也称为"拆分器")调整面板的大小.另外,还可以嵌套多个

chmod和chown命令详细用法

Linux下数字表示文件的操作权限(777,755,..) Linux下,查看某路径下用(ls -l)查看所有文件的详细属性列表时,会看到文件的操作权限,类似"drwxr-xr-x"的字符串. 这串字符可以分成4段理解,结构为"d + 文件所有者操作权限 + 文件所有者所在组操作权限 + 其余人的操作权限": 1,第一段:例子中字母"d",表示文件所在目录 2,第二段:例子中字符串"rwx",表示文件所有者对此文件的操作权限

Java包(Package)的详细用法(转)

Java包(Package)的详细用法 http://wenwen.soso.com/z/q229375145.htm 当一个大型程序交由数个不同的程序人员开发时,用到相同的类名是很有可能的,那么如果发生了这样的事件我们该怎么办那?,在我们java程序开发中为了避免上述事件,提供了一个包的概念(package),那么既然有了这样一种方法能避免上述事件,那么我们怎样使用package那?,使用方法很简单我们只需要在我们写的程序第一行使用package关键字来声明一个包就行了,例如我们来声明一个名为