一、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)查找Select
using System; using System.Data; using System.Text; namespace ConsoleApp { class Program { static void Main(string[] args) { DataTable dt = new DataTable("temp"); dt.Columns.Add("Id"); //添加列 dt.Columns.Add("Name"); dt.Rows.Add("1", "刘备"); //添加行 dt.Rows.Add("2", "关羽"); dt.Rows.Add("3", "张飞"); dt.Rows.Add("4", "赵云"); dt.Rows.Add("5", "黄忠"); SelectFun(dt); Console.ReadKey(); } #region 遍历范例 /// <summary> /// 遍历方式一 /// </summary> /// <param name="dt"></param> static void TraversalFun1(DataTable dt) { for (int i = 0; i < dt.Rows.Count; i++) { Console.WriteLine("编号:{0};名称:{1}", dt.Rows[i]["Id"].ToString(), dt.Rows[i]["Name"].ToString()); } } /// <summary> /// 遍历方式二 /// </summary> /// <param name="dt"></param> static void TraversalFun2(DataTable dt) { foreach (DataRow myRow in dt.Rows) { Console.WriteLine("编号:{0};名称:{1}", myRow[0].ToString(), myRow[1].ToString()); } } /// <summary> /// 遍历方式三 /// </summary> /// <param name="dt"></param> static void TraversalFun3(DataTable dt) { foreach (DataRow dr in dt.Rows) { Console.WriteLine("编号:{0};名称:{1}", dr["Id"].ToString(), dr["Name"].ToString()); } } /// <summary> /// 遍历方式四 /// </summary> /// <param name="dt"></param> static void TraversalFun4(DataTable dt) { StringBuilder msg = new StringBuilder(); foreach (DataRow dr in dt.Rows) { msg.Clear(); foreach (DataColumn dc in dt.Columns) { msg.AppendFormat("{0}:{1};", dc.ColumnName, dr[dc.ColumnName]); } Console.WriteLine(msg.ToString()); } } #endregion #region 查找范例 static void SelectFun(DataTable dt) { //条件查询 Console.WriteLine("条件查询示例语句:Id > 1 and Name <> '关羽'"); Display(dt.Select("Id > 1 and Name <> '关羽'", "Id desc")); //like示例 Console.WriteLine("like示例语句:Name like '关%"); Display(dt.Select("Name like '关%'", "Id desc")); } static void Display(DataRow[] drArr) { foreach (DataRow dr in drArr) { Console.WriteLine(dr["Name"]); } } #endregion } }