首页 > 技术文章 > DataTable自身查询方法

crhdyl 2016-03-18 15:58 原文

这里说到的查询有两种。

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~。

推荐阅读