如何在DataTable中查找数据 Dataview检索数据
2014-02-25 22:21
435 查看
如何在DataTable中查找数据 2012-02-22 08:59:04| 分类: C# |举报|字号 订阅 一、在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%"});
相关文章推荐
- [转载] 虚拟化管理软件比较
- fstab文件中挂载/dev/mtdblock设备不行!
- linux中select()函数分析
- JavaEE项目切换到Intellij遇到的一个问题
- J2EE的13种核心技术
- webkit在vs2008中编译
- Java中字符串相等与大小比较
- JSP内置对象
- Java中字符串相等与大小比较
- Docker简要操作
- 面对嘲讽,淡然一笑
- LeetCode 63 — Unique Paths II(C++ Java Python)
- jsp中response实现图片下载
- JSP响应的处理过程&JSP的三类语法
- 网站压力测试工具webbench安装和使用
- JavaSE 8 :Lambda 快速学习(二)
- 2月24日--3月2日(共18小时,剩4599小时)
- 【项目】 代码走查内容总结
- cocos2d CCLayer 触摸相关
- Swing 布局时 组件大小问题