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

(0)

相关推荐

  • c#将list类型转换成DataTable方法示例

    复制代码 代码如下: /// <summary>       /// 将List转换成DataTable       /// </summary>       /// <typeparam name="T"></typeparam>       /// <param name="data"></param>       /// <returns></returns>   

  • C#中datatable序列化与反序列化实例分析

    本文实例讲述了C#中datatable序列化与反序列化,分享给大家供大家参考.具体方法如下: 一.datatable序列化 public string getSendDetailQuery(DateTime timeS, DateTime timeE, string sccount) { try { SmsOperate so = new SmsOperate(); //得到dt DataTable dtt = so.getSendDetailQuery(timeS, timeE, sccoun

  • C#中DataTable删除行的方法分析

    本文实例讲述了C#中DataTable删除行的方法,分享给大家供大家参考之用.具体实现方法如下: 自己的删除例子(drTemp是表,gvSummary是dev 的gridview.单击右键点击grid删除): 1.dtTemp.Rows.RemoveAt(gvSummary.FocusedRowHandle); 2.dtTemp.Rows[gvSummary.FocusedRowHandle].Delete();  dtTemp.AcceptChanges(); 在C#中,如果要删除DataTa

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

    一.排序1.获取DataTable的默认视图2.对视图设置排序表达式3.用排序后的视图导出的新DataTable替换就DataTable(Asc升序可省略,多列排序用","隔开)1).重生法 复制代码 代码如下: dstaset.Tables.Add(dt)dataset.Tables(0).DefaultView.Sort = "id desc" 2).直接法 复制代码 代码如下: dv = New DataView(dt)dv.Sort = "id d

  • C#使用DataSet Datatable更新数据库的三种实现方法

    本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参考之用.具体方法如下: 一.自动生成命令的条件 CommandBuilder 方法 a)动态指定 SelectCommand 属性 b)利用 CommandBuilder 对象自动生成 DataAdapter 的 DeleteCommand.InsertCommand 和 UpdateCommand

  • C#获取变更过的DataTable记录的实现方法

    本文实例讲述了C#获取变更过的DataTable记录的实现方法,是一个非常实用的功能!具体实现方法如下: 首先DataTable可以看做是一个物理表的内存式存储,每一个DataRow都有一个属性叫做RowState.因此任意一行中某一个字段发生改变,那么整个DataRow的RowState也就发生了改变.RowState是一个枚举,其中包含5个内容: 1)Detached:未被附加(一般刚创建的DataRow,或者已经被Remove或者RemoveAt,或者Delete之后调用过AcceptCh

  • c#扩展datatable转json示例

    复制代码 代码如下: namespace PadWebServices.Model{   public static class DataTableExtender    {       public static string ToJson(this DataTable dt,string tbName)  // this DataTable 标识对DataTable类的扩展            {                StringBuilder JsonString = new

  • C#对DataTable里数据排序的方法

    直接给个实例代码吧 复制代码 代码如下: protected void Page_Load(object sender, EventArgs e)    {        DataTable dt = new DataTable();        dt.Columns.Add("Name");        dt.Columns.Add("Age");//因为是字符串,所以排序不对        dt.Rows.Add("小明", "

  • C#实现Datatable排序的方法

    本文实例展示了C#实现Datatable排序的方法,分享给大家供大家参考之用.具体方法如下: 一般来说,在C#中要对Datatable排序,可使用DefaultView的Sort方法.需要先获取Datatable的DefaultView,然后设置得到的Dataview的sort属性,最后用视图的ToTable方法将排好序的dataview导出为Datatable. 代码如下: DataTable dt = new DataTable(); dt.Columns.Add("ID", ty

  • c# DataTable与不同结构实体类转换的方法实例

    在实际开发过程中,或者是第三方公司提供的数据表结构,与我们系统中的实体类字段不对应,遇到这样我们怎么处理呢?可能有人会说,在转换时创建一个实体对象,对表里的数据逐行遍历来实例化这个实体对象不就完了.的确没错,这方法可行,但是这个方法效率极低,遇到亿万数据的话那就要实例化亿万个对象,由此可见它的效率了.先看一下我的实体类 复制代码 代码如下: /// <summary>/// 具体的实体类,和数据表中不同/// </summary>public class Person{    [D

  • c#的datatable转list示例

    复制代码 代码如下: using System;using System.Collections.Generic;using System.Data;using System.Reflection; namespace jdrz.HumanIdentify{    public class Helper    {        /// <summary>        /// DataTable 转换为List 集合        /// </summary>        ///

随机推荐