DataTable查询。
里说到的查询有两种。
/// <summary>/// 获取单张表/// </summary>/// <returns></returns>public static DataTable GetTable(){DataTable dt = new DataTable();dt.Columns.Add(new DataColumn("Id", typeof(int)));dt.Columns.Add(new DataColumn("Name", typeof(string)));dt.Columns.Add(new DataColumn("Age", typeof(int)));DataRow dr = dt.NewRow();dr["Id"] = 1;dr["Name"] = "tangh";dr["Age"] = 20;dt.Rows.Add(dr);dr = dt.NewRow();dr["Id"] = 2;dr["Name"] = "tangha";dr["Age"] = 19;dt.Rows.Add(dr);dr = dt.NewRow();dr["Id"] = 3;dr["Name"] = "tanghao";dr["Age"] = 21;dt.Rows.Add(dr);return dt;}
3.最后使用以下,Find方法。/// <summary> /// 使用DataTable.Select方法检索 /// </summary> public static void VilideDataTableSelect() { DataTable dt = GetTable(); // 类似where条件查询,可以使用Id=2 and Name=ddd DataRow[] rows = dt.Select("Id=2 and Name like 'tang%'"); // select类似where条件 foreach (DataRow dr in rows) { Console.Write(string.Format("Id={0},Name={1},Age={2}", dr["Id"], dr["Name"], dr["Age"])); } }
/// <summary> /// 使用DataTable.Rows.Find方法检索 /// </summary> public static void VilideDataRowFind() { DataTable dt = GetTable(); // 设置主键,可以使用复合主键 dt.PrimaryKey = new DataColumn[] { dt.Columns["Id"] }; DataRow dr = dt.Rows.Find(2); // 查找Id=2的。即,这里检索主键。 Console.Write(string.Format("Id={0},Name={1},Age={2}", dr["Id"], dr["Name"], dr["Age"])); }
1、排序
1.1、利用查询排序 DataRow[] dataRows = dataTable.Select("条件", "id asc"); //或多列排序 DataRow[] dataRows = dataTable.Select("条件", "id asc,name asc,..."); //对所有的进行排序 DataRow[] dataRows = dataTable.Select("1=1", "id asc,name asc,...");
1.2、默认视图排序 DataView dataView = dataTable.DefaultView; dataView.Sort = "id asc"; dataTable = dataView.ToTable();
2、搜索
如果单纯搜索, DataRow[] dataRows = dataTable.Select("条件");
或者
int id; string name; DataRow[] dataRows = dataTable.Select(string.Format(@"id={0} and name={1}",id,name));
如果对搜索结果排序,如同1.1。
说明:select方法如同sql语句对单表的查询,条件如同sql语句的where之后的部分,>,<,=,LIKE等都可以使用。
3、合并
合并的对象必须结构要一致,如果不一致先转换一致。然后,利用Merge方法, DataTable dataTable1 = null; DataTable dataTable2 = null; dataTable1.Merge(dataTable2);