您的位置:首页 > 其它

DataTable的查找

2015-09-10 13:31 399 查看
这里说到的查询有两种。
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’值记录。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: