C#中DataTable使用技巧
在项目中经常用到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使用技巧的更多相关文章
- DataTable使用技巧总结【转】
一.DataTable简介 ()构造函数 DataTable() 不带参数初始化DataTable 类的新实例. DataTable(string tableName) 用指定的表名初始化DataTa ...
- (转载)DataTable使用技巧总结
在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.Da ...
- C# 中 DataTable 使用详解。
在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...
- ios开发中的小技巧
在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...
- C#中DataTable中的Compute方法使用收集
原文: C#中DataTable中的Compute方法使用收集 Compute函数的参数就两个:Expression,和Filter. Expresstion是计算表达式,关于Expression的详 ...
- 背水一战 Windows 10 (21) - 绑定: x:Bind 绑定, x:Bind 绑定之 x:Phase, 使用绑定过程中的一些技巧
[源码下载] 背水一战 Windows 10 (21) - 绑定: x:Bind 绑定, x:Bind 绑定之 x:Phase, 使用绑定过程中的一些技巧 作者:webabcd 介绍背水一战 Wind ...
- 绑定: x:Bind 绑定, x:Bind 绑定之 x:Phase, 使用绑定过程中的一些技巧
背水一战 Windows 10 之 绑定 x:Bind 绑定 x:Bind 绑定之 x:Phase 使用绑定过程中的一些技巧 示例1.演示 x:Bind 绑定的相关知识点Bind/BindDemo.x ...
- C#中DataTable排序、检索、合并等操作实例
转载引用至:http://www.jb51.net/article/49222.htm 一.排序1.获取DataTable的默认视图2.对视图设置排序表达式3.用排序后的视图导出的新DataT ...
- iOS开发中调试小技巧
对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...
随机推荐
- RPM软件包管理的查询功能
以后大家升级rpm包的时候,不要用Uvh了! 我推荐用Fvh 前者会把没有安装过得包也给装上,后者只会更新已经安装的包 总结:未安装的加上小写p,已安装的不需要加p 查询q rpm {- ...
- Android 相机对焦模式
Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE Camer ...
- 转关于垂直切分Vertical Sharding的粒度
垂直切分的粒度指的是在做垂直切分时允许几级的关联表放在一个shard里.这个问题对应用程序和sharding实现有着很大的影响. 关联打断地越多,则受影响的join操作越多,应用程序为此做出的妥协就越 ...
- MyEclipse内存溢出问题解决方法
tomcat从1.7换到1.6,一直报这个错:java.lang.reflect.InvocationTargetException 解决方法: 加入: -server -Xms512m -Xmx20 ...
- Extjs的radio单选框的使用
Extjs的radio的FormPanel的代码如下: { xtype : 'radiogroup', fieldLabel : '是否置顶', name:'isTop', it ...
- ASP.NET MVC 3 使用Model自定义验证的样式
1.修改jquery.validate.unobtrusive.js 将onError方法修改 //修改的部分 //////////////////////////////////////////// ...
- 有哪些关于 Android 开发的博客值得订阅?
链接:http://www.zhihu.com/question/19788650/answer/60771437来源:知乎 Google 官方[Android Developers Blog](An ...
- STL —— STL六大组件
注:以下内容摘自 http://blog.csdn.net/byxdaz/article/details/4633826 STL六大组件 容器(Container) 算法(Algorithm) 迭代器 ...
- 面向服务的体系结构(SOA)——(1)目标与核心概念
什么是SOA? 常常听到人们拿OOP和SOA一起来说事,诸如SOA是否可以代替面向对象(OOP)或者两者比哪个更加有优势?直接回答有难度举个例子可能显得答案更容易理解.小孩子问你该认真写作业呢?还是高 ...
- Wcf for wp8 使用iis Express 承载Wcf服务部署发布网站(三)
我们接下来要做的是 本地电脑当作服务器(模拟外网服务器)来承载Wcf服务程序,通过引用本地电脑ip地址访问wcf服务程序接口 http://192.168.1.123/Service1.svc 一.先 ...