如何在DataTable中查找数据

 我来答
依兰彬歌
2015-11-17 · TA获得超过914个赞
知道小有建树答主
回答量:940
采纳率:0%
帮助的人:1282万
展开全部
一、在DataTable中查找

1. 使用Select方法查找没有主键的表,或者通过非主键字段查找。
DataTable本身有一个select方法,返回的是一个DataRow的数组:
using (SqlConnection firstconnection = new SqlConnection(connectionstring))
{
SqlCommand cmdEmployee = firstconnection.CreateCommand();
cmdEmployee.CommandText = "select * from Employees";
SqlDataAdapter sda = new SqlDataAdapter(cmdEmployee);
DataSet ds=new DataSet();
sda.Fill(ds, "Employees");
DataRow[] dr=ds.Tables["Employees"].Select("Title Like 'Production' ");
}

2. 使用Find方法查找有主键的表

分两种情况:

(1) 主键只有一个字段
DataRow dr = dt.Rows.Find("主键字段的值");

(2) 主键有多个字段
例如,adventureWorks中的sales.SalesPersonQuotaHistory表,其主键由1个int类型字段和1个datetime组成,以下代码查找满足“ISalesPersonD=268且QuotaDate=2001-7-1 0:00:00 ”的记录。
Object[] obj= new Object[]{268,"2001-7-1 0:00:00"};
dr = dt.Rows.Find(obj);

二、使用DataView筛选数据

DataView可以看成DataTable中的记录加上某种条件后得到的数据。DataView依附于DataTable,每个DataTable都至少有一个DataView。数据绑定中控件绑定到的其实不是DataTable,而是DataTable的DefaultView。

DataView常用的数据筛选方法有:
1. 筛选特定状态的行
以下代码找出所有刚删除掉的行:
dv.RowStateFilter = DataViewRowState.Deleted;

2. 使用Sort属性,可以指定单个或多个列进行排序,如:
dv.Sort = "Name ASC,ID DESC";

3. 使用RowFilter属性动态筛选记录。
dv.RowFilter = "Name LIKE '张%'";

4. 使用Find和FindRows在DataView中查找。

使用这两个方法,是按照行的排序关键字值来对行进行搜索的。

Find方法返回一个整数,表示匹配搜索条件的DataRowView的索引。如果多行匹配,只返回一个匹配行索引,如果未找到匹配项,返回-1。

若要返回匹配多个行的搜索结果,可以使用FindRows方法。它返回DataView中的所有匹配行的DataRowView数组。如果未找到匹配项,DataRowView数组为空。

若要使用Find或FindRows方法,必须通过将ApplyDefaultSort设置为true或通过使用DataView对象的Sort属性来指定排序顺序,否则将引发异常。这两种方法将一个值数组用做输入,该数组的长度与排序顺序包含的列数相匹配。当对多个列进行排序时,对象数组的值必须匹配在DataView的Sort属性中指定的列的顺序。

对具有单个列排序顺序的DataView调用Find方法。
dv.Sort = "Name";
int rowIndex = dv.Find("张三");
如果Sort属性指定多个列,则必须按照Sort属性指定的顺序为每个列传递包含搜索值的对象数组。
dv.Sort = "Name,ID";
DataRowView[] foundRows = dv.FindRows(new Object[]{"7" , "Production%"});
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式