c# datatable用法总结
拍搜洞 在项目中经常用到DataTable 如果DataTable使用得当 不仅能使程序简洁实用 而且能够提高性能 达到事半功倍的效果 现对DataTable的使用技巧进行一下总结
一 DataTable简介
( )构造函数
DataTable() 不带参数初始化DataTable 类的新实例
DataTable(string tableName) 用指定的表名初始化DataTable 类的新实例
DataTable(string tableName string tableNamespace) 用指定的表名和命名空间初始化DataTable 类的新实例
( ) 常用属性
CaseSensitive 指示表中的字符串比较是否区分大小写
ChildRelations 获取此DataTable 的子关系的集合
Columns 获取属于该表的列的集合
Constraints 袭枯 获取由该表维护的约束的集合
DataSet 获取此表所属的DataSet DataSet相关信息 可见我以前的漏陆一篇文章《数据访问( )-DataSet》
DefaultView 获取可能包括筛选视图或游标位置的表的自定义视图
HasErrors 获取一个值 该值指示该表所属的DataSet 的任何表的任何行中是否有错误
MinimumCapacity 获取或设置该表最初的起始大小 该表中行的最初起始大小 默认值为
Rows 获取属于该表的行的集合
TableName 获取或设置DataTable 的名称
( )常用方法
AcceptChanges() 提交自上次调用AcceptChanges() 以来对该表进行的所有更改
BeginInit() 开始初始化在窗体上使用或由另一个组件使用的DataTable 初始化发生在运行时
Clear() 清除所有数据的DataTable
Clone() 克隆DataTable 的结构 包括所有DataTable 架构和约束
EndInit() 结束在窗体上使用或由另一个组件使用的DataTable 的初始化 初始化发生在运行时
ImportRow(DataRow row) 将DataRow 复制到DataTable 中 保留任何属性设置以及初始值和当前值
Merge(DataTable table) 将指定的DataTable 与当前的DataTable 合并
NewRow() 创建与该表具有相同架构的新DataRow
二 DataTable使用技巧
( )Create a DataTable
DataTable dt = new DataTable( Table_AX );
( )Add columns for DataTable
//Method
dt Columns Add( column System Type GetType( System String ));
//Method
DataColumn dc = new DataColumn( column System Type GetType( System Boolean ));
dt Columns Add(dc);
( )Add rows for DataTable
//Initialize the row
DataRow dr = dt NewRow();
dr[ column ] = AX ;
dr[ column ] = true;
dt Rows Add(dr);
//Doesn t initialize the row
DataRow dr = dt NewRow();
dt Rows Add(dr );
( )Select row
//Search the second row 如果没有赋值 则用is null来select
DataRow[] drs = dt Select( column is null );
DataRow[] drss = dt Select( column = AX );
( )Copy DataTable include data
DataTable dtNew = dt Copy();
( )Copy DataTable only scheme
DataTable dtOnlyScheme = dt Clone();
( )Operate one row
//对dt的操作
//Method
DataRow drOperate = dt Rows[ ];
drOperate[ column ] = AXzhz ;
drOperate[ column ] = false;
//Method
drOperate[ ] = AXzhz ;
drOperate[ ] = false;
//Method
dt Rows[ ][ column ] = AXzhz ;
dt Rows[ ][ column ] = false;
//Method
dt Rows[ ][ ] = AXzhz ;
dt Rows[ ][ ] = false;
( )Evaluate another DataTable s row to current Datatable
dtOnlyScheme Rows Add(dt Rows[ ] ItemArray);
( )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();
( )Filter DataTable
dt DefaultView RowFilter = column <> true ;
dt DefaultView RowFilter = column = true ;
( )Sort row
dt DefaultView Sort = ID Name ASC ;
dt=dt DefaultView ToTable();
( )Bind DataTable
//绑定的其实是DefaultView
gvTestDataTable DataSource = dt;
gvTestDataTable DataBind();
( )judge the DataTable s Column name is a string
//判断一个字符串是否为DataTable的列名
dtInfo Columns Contains( AX );
( )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=ConvertBeeenDataTableAndXML_AX(dt_AX);
DataTable dt = ConvertBeeenDataTableAndXML_AX(xml);
}
public string ConvertBeeenDataTableAndXML_AX(DataTable dtNeedCoveret)
{
System IO TextWriter = new System IO StringWriter();
//if TableName is empty WriteXml() will throw Exception
dtNeedCoveret TableName=dtNeedCoveret TableName Length== ? Table_AX :dtNeedCoveret TableName;
dtNeedCoveret WriteXml();
dtNeedCoveret WriteXmlSchema();
return ToString();
}
public DataTable ConvertBeeenDataTableAndXML_AX(string xml)
{
System IO TextReader trDataTable = new System IO StringReader(xml Substring( 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;
lishixinzhi/Article/program/net/201311/12556