在项目中经常用到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. VS(VisualStudio)中折叠代码、打开代码的快捷键

    CTRL + M, CTRL + O折叠代码定义 CTRL + M, CTRL + L展开代码定义

  2. DCMTK354之VC++ 2008 MFC应用程序配置完整过程

    花了一个礼拜,终于在VC++2008 MFC 应用程序中完成了首个基于DCMTK354的首个程序ECHOSCUWIN32,现将过程记录下来,便于日后查阅,同时也提供给那些有幸看到此博文而对他们又有帮助 ...

  3. C++ Set

    set集合容器:实现了红黑树的平衡二叉检索树的数据结构,插入元素时,它会自动调整二叉树的排列,把元素放到适当的位置,以保证每个子树根节点键值大于左子树所有节点的键值,小于右子树所有节点的键值:另外,还 ...

  4. doTjs源码研究笔记

    首先是入口方法 /*tmpl:模板文本 c:用户自定义配置 def:定义编译时执行的数据*/doT.template = function(tmpl, c, def) { } 然后进入第一句代码 c ...

  5. awk内置字符串函数 awk 格式化输出

    i249 ~ # ps -efl|head -1|awk '$2~/S/{print $2}'Si249 ~ # ps -efl|awk '$2~/S/{print $2}'SSSS printf - ...

  6. 用JAVA代码实现验证邮箱地址是否符合

    public class Test{ public static void main(String[] args){ Test t = new Test(); String email = " ...

  7. 正则表达式里"-"中划线的使用注意

    今天要匹配正则表达式,把非法的字符找出来,开始的写法是这个 [^A-Za-z0-9_.*-+%!],我的目的是把_.*-+%!这7个字符算合法字符,但是发现有许多其他字符也合法了,原来是中划线的位置不 ...

  8. delphi 换行操作 Word

    delphi 换行操作 我将我的商用<旅行社管理系统>的 发团通知 部分奉献给您,望对您有所帮助. procedure TFrmMain.N327Click(Sender: TObject ...

  9. Java for LeetCode 188 Best Time to Buy and Sell Stock IV【HARD】

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  10. codeforces 486B.OR in Matrix 解题报告

    题目链接:http://codeforces.com/problemset/problem/486/B 题目意思:给出一个m行n列的矩阵B(每个元素只由0/1组成),问是否可以利用矩阵B,通过一定的运 ...