DataTable的查找
这里说到的查询有两种。
1.DataTable.Select
2.DataTable.Rows.Find
a>先建立一个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; }
2.然后我们来使用第一种Select方法。
/// <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"])); } }
.最后使用以下,Find方法。
/// <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"])); } //总结:到现在才发现原来本身有很多方法可以检索的,所以也不必每次都循环遍历查找了。
O(∩_∩)O~。
2. DataView dv = tb.DefaultView;
--DataTable的自定义视图。
dv.RowFilter = "";
dv.RowFilter = "ERPJournalid='NA'";
--筛选出其中ERPJournalid为‘NA’值记录。