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;

}

C# DataTable的詳細使用方法

时间: 2024-10-23 14:27:10

C# DataTable的詳細使用方法的相关文章

C# DataTable的詳細用法 - hcw_peter的专栏 - 博客频道 - CSDN

C# DataTable的詳細用法 - hcw_peter的专栏 - 博客频道 - CSDN.NET 在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简介 (1)构造函数           DataTable()   不带参数初始化DataTable 类的新实例.           DataTable(string tableName)  用指

C# DataTable的詳細用法

转载别人的转载,原作者都不知道了 在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简介 (1)构造函数           DataTable()   不带参数初始化DataTable 类的新实例.           DataTable(string tableName)  用指定的表名初始化DataTable 类的新实例.           

C# DataTable的詳細用法 (转)

在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简介 (1)构造函数           DataTable()   不带参数初始化DataTable 类的新实例.           DataTable(string tableName)  用指定的表名初始化DataTable 类的新实例.           DataTable(string

C# DataTable.Load 和 DbDataAdapter.Fill 方法的比较。附取消限制的方法

两个方法都能获取数据库数据,但是有区别. DataTable.Load 方法获取数据,并且把数据库中的各种限制也加载到了DataTable中,比如能否为NULL,是否自增列 而DbDataAdapter.Fill 方法只是简单的把数据获取出来 如果必须要用Load方法获取数据,并且想要去除掉数据库中的限制,可以使用以下代码 (SqlConnection举例) SqlCommand com = new SqlCommand("select * from LoginUser", con);

Datatable的Select()方法简介

DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的重载,分别是 Select() Select(string filterExpression) Select(string filterExpression, string sort) Select(string filterExpression,string sort, DataViewRowSt

C#中datatable导出excel(三种方法)

方法一:(拷贝直接可以使用,适合大批量资料, 上万笔)Microsoft.Office.Interop.Excel.Application appexcel = new Microsoft.Office.Interop.Excel.Application();SaveFileDialog savefiledialog = new SaveFileDialog();System.Reflection.Missing miss = System.Reflection.Missing.Value;ap

如何註冊blockstack id, 並免費獲得大約1美金的比特幣,內附一步一步最詳細的圖文教程

如何註冊一個blockstack id, 並免費獲得大約1美金的比特幣,內附一步一步最詳細的圖文教程 blockstack id 類似於qq登錄或者微信一鍵登錄,在github上高達6k的點贊,已經有數千的程序員使用這個blockstack架構來開發dapp.使用blockstack id 對於普通用戶和開發者有2個作用: 1. 可以不用註冊app,直接登錄.體驗眾多的dapp.比如類似於google drive的xordrive2. 開發者可以免去寫註冊.登錄的代碼,省去大量開發時間,api比

C#将DataTable转换成list的方法

本文实例讲述了C#将DataTable转换成list及数据分页的方法.分享给大家供大家参考.具体如下: /// <summary>   /// 酒店评论列表-分页  /// </summary>  /// <param name="userId"></param>  /// <param name="pageIndex">当前页</param>  /// <param name="

C#中删除DataTable中的行的方法

1.在C#中,如果要删除DataTable中的某一行,大约有以下几种办法: •使用DataTable.Rows.Remove(DataRow),或者DataTable.Rows.RemoveAt(index):可以直接删除行•datatable.Rows[i].Delete().Delete()之后需要datatable.AccepteChanges()方法确认完全删除,因为Delete()只是将相应列的状态标志为删除,还可以通过datatable.RejectChanges()回滚,使该行取消