DataTable自身查询方法
这里说到的查询有两种。
1.DataTable.Select
2.DataTable.Rows.Find
a>先建立一个DataTable供使用吧。
1 2 3 4 /// <summary> 5 /// 获取单张表 6 /// </summary> 7 /// <returns></returns> 8 public static DataTable GetTable() 9 { 10 DataTable dt = new DataTable(); 11 12 dt.Columns.Add(new DataColumn("Id", typeof(int))); 13 dt.Columns.Add(new DataColumn("Name", typeof(string))); 14 dt.Columns.Add(new DataColumn("Age", typeof(int))); 15 16 DataRow dr = dt.NewRow(); 17 dr["Id"] = 1; 18 dr["Name"] = "tangh"; 19 dr["Age"] = 20; 20 dt.Rows.Add(dr); 21 22 dr = dt.NewRow(); 23 dr["Id"] = 2; 24 dr["Name"] = "tangha"; 25 dr["Age"] = 19; 26 dt.Rows.Add(dr); 27 28 dr = dt.NewRow(); 29 dr["Id"] = 3; 30 dr["Name"] = "tanghao"; 31 dr["Age"] = 21; 32 dt.Rows.Add(dr); 33 34 return dt; 35 } 36 37 38
2.然后我们来使用第一种Select方法。
1 /// <summary> 2 /// 使用DataTable.Select方法检索 3 /// </summary> 4 public static void VilideDataTableSelect() 5 { 6 DataTable dt = GetTable(); 7 8 // 类似where条件查询,可以使用Id=2 and Name=ddd 9 DataRow[] rows = dt.Select("Id=2 and Name like 'tang%'"); // select类似where条件 10 11 foreach (DataRow dr in rows) 12 { 13 Console.Write(string.Format("Id={0},Name={1},Age={2}", dr["Id"], dr["Name"], dr["Age"])); 14 } 15 }
3.最后使用以下,Find方法。
1 /// <summary> 2 /// 使用DataTable.Rows.Find方法检索 3 /// </summary> 4 public static void VilideDataRowFind() 5 { 6 DataTable dt = GetTable(); 7 8 // 设置主键,可以使用复合主键 9 dt.PrimaryKey = new DataColumn[] { dt.Columns["Id"] }; 10 11 DataRow dr = dt.Rows.Find(2); // 查找Id=2的。即,这里检索主键。 12 13 Console.Write(string.Format("Id={0},Name={1},Age={2}", dr["Id"], dr["Name"], dr["Age"])); 14 }
总结:到现在才发现原来本身有很多方法可以检索的,所以也不必每次都循环遍历查找了。
O(∩_∩)O~。