DataView 数据筛选

http://blog.csdn.net/han_yankun2009/article/details/19154797?reload



数据筛选,种类无非两种,筛选有用去除重复或无用。

在以前做项目中遇到一个问题,就是获取DataTable中某一列的值,因为从数据库中检索数据时,按照2个字段进行分组,而要获得的那一列刚好在分组这两列中,所以该列的值必然有重复,于是就想到了去除重复,如何去除重复数据呢。这里述说下我的学习过程

 

最开始的简单,只看某一个字段是否有重复的。

一个DataTable,想查看是关键字段是否有重复。不想写循环的语句,如何使用呢。我们首先定义dataView


dataView

表示用于排序、筛选、搜索、编辑和导航的 DataTable 的可绑定数据的自定义视图。


dataView.RowFilter


设置过滤


RowFilter是一个可读写的属性,用来读取和设置表过滤的表达式。

你可以用列名,逻辑和数字运算符和常量的任意合法组合组成表达式。以下是一些例子:


dv.RowFilter = "Country = 'USA'";//列名为County,值为usa

dv.RowFilter = "EmployeeID >5 AND Birthdate < #1/31/82#"

dv.RowFilter = "Description LIKE '*product*'"

 

dataTable.DefaultView


DefaultView 属性返回可用于排序、筛选和搜索 DataTable  DataView


看实例代码


要筛选出 datatable中列 Type palte都是1的数据

[csharp] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. DataTable dt1;  
  2. DataView dv = new DataView(dt1);  
  3. dv.RowFilter = "palte='1' AND Type='1'";  
  4. DataTable dt_New = dv.ToTable();  

 注意思考:这个方法作用不仅在于次,而且还在于可以切分表,将一个表的数据切分多个数据,这在一些场合还是很有作用的。

但是这种方式比较固定和死板,所以并不能适应所有的类型。如何能更好的适应任意的类型呢。

请继续看下面代码


适合任意列的数据对比


若是符合所有的任务列,就需要获取所有的列名。运用dataviewdatatable数据筛选方法。

 

 datatable的筛选方法

 

                   

[csharp] view plain copy 在CODE上查看代码片 派生到我的代码片
  1.  判断是否有相同的行  
  2.                     DataView dvStudent = newDataView(dt);  
  3.                     //去除重复的行  
  4.                     string[] straColumn = newstring[dt.Columns.Count];  
  5. //获取所有列名  
  6.                     for (int LoopIndex = 0;LoopIndex < dt.Columns.Count; LoopIndex++)  
  7.                     {  
  8.                         straColumn[LoopIndex] =dt.Columns[LoopIndex].ColumnName;  
  9.                     }  
  10. //调用筛选去除重复数据方法  
  11.                     DataTable dtGrid =dt.DefaultView.ToTable(true, straColumn);  


这里是将列名使用了数组的方式进行的封装,还可以直接将数据写在里面,


[csharp] view plain copy 在CODE上查看代码片 派生到我的代码片
  1. dv.ToTable(true, newstring[] { "columnA,columnF,columnC" });  
  2. DataTable newTable4 =dv.ToTable("NewTableName",truenew string[] { "columnA,columnF,columnC" });  

具体说明,请查看msdn


选择DataTable中的唯一值

在.NETFramework2.0中,选择DataTable等数据源中的唯一值(类似SQL中Distinct的返回结果)非常简单,如下即可:

DataTabled = dataSetName.dataTableName.DefaultView.ToTable(true, new string[] {"ColumnName" });

http://msdn.microsoft.com/zh-cn/library/system.data.datatable.defaultview(VS.80).aspx

 

通过几次简单的对比了解,发现方法还是有的,只是自己不知道或是根本没听过,所以还是说不怕不知道就怕不知道。这里的点滴积累希望多对家有用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值