知识大全 脱机数据的排序、搜索和筛选

Posted

篇首语:智者不为愚者谋,勇者不为怯者死。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 脱机数据的排序、搜索和筛选相关的知识,希望对你有一定的参考价值。

   DataTable类的搜索和筛选功能

  根据主键值查找行

  DataRowCollection类的Find方法 接受包含要查找行的主键值为参数 因为是根据主键值查找 所以仅返回一个DataRow          DataTable tbl=new DataTable( Customers );        da Fill(tbl);        tbl PrimaryKey=new DataColumn[] tbl Columns[ CustomerID ];        DataRow row=tbl Rows Find( ALFKI );        if((row<>null)        consol WriteLine(…);

  如果主键为复合键 则应将一个对象数组传递给Find方法 其中数组中的项对应于包含该主键的DataColumn          tbl PrimaryKey=new DataColumn[] tbl Columns[ OrderID ]         tbl Columns[ ProductID ];        Object[] objCriteria=new object[] ; //object对象数组        DataRow row=tbl Rows Find(objCriteria);

  执行动态的复杂搜索-Select方法

  DataTable类的Select方法接受类似于SQL查询中的Where条件语句为参数 返回DataRowCollection对象          DataTable tbl=new DataTable( Customers );        da Fill(tbl);        sting strFilter;        strFilter= Country= USA and City <> Seattle ;        foreach(DataRow row in tbl Select(strFilter))        Consol WriteLine(…);

  Select方法的参数字符串接受使用*或%作为通配符进行模糊查询 例如 State like New% 查找State字段以 New 开头的数据行 另外如果搜索字符串中涉及日期 其值用双#包含而不使用双单引号

  重载的Select 方法可包含第二个参数 控制搜索结果行的排序顺序

  strSortOrder= City DESC ;//搜索结果按City字段降序排列

  tbl Select(strFilter strSortOrder);

  重载的Select方法亦可包含第三个参数 指定DataViewRowState枚举的一个值 控制Select方法仅搜索指定状态的DataRow

  DataViewRowState dvrs=DataViewRowState ModifiedCurrent;

  tbl Select( dvrs);//前二个参数为空 仅使用第三个参数

   DataView对象

  DataTable对象的Select方法功能强大 但执行效率不高 而且Windows和Web窗体不支持绑定Select方法的返回值-DataRow对象数组 DataView对象解决了以上两点不足 DataView对象不维护自己的数据附本 当通过DataView访问数据时 它将返回存储在相应DataTable中的数据

  创建DataView对象

  DataView对象必需与DataTable对象相关联 以下几种构造函数可以创建DataTable对象并与DataTable相关联          DataTable tbl=new DataTable( MyTable );        DataView vue;        vue=new DataView();        vue Table=tbl;        或 vue=new DataView(tbl);

  DataView还有一个复杂的构造函数 可以设置Table RowFilter Sort和RowStateFilter属性 示例代码如下

            vue Table=tbl;        vue RowFilter= Country= USA ;        vue Sort= City DESC ;        DataViewRowState dvrs=DataViewRowState ModifiedOriginal;        vue RowStateFilter=dvrs; //仅查看修改过的行的原始值        或 vue=new DataView(tbl Country= USA City DESC dvrs);

  DataView类的Count属性 返回可以通过DataView看到的数据行数

  DataRowView类

  DataTable类通过DataRow对象访问数据项 DataView类通过DataRowView对象访问数据项 其功能与DataRow类似          DataView vue=new DataView(tbl);        DataRowView row=vue[ ];        Console WriteLine(row[ CompanyName ]);

  DataView中搜索数据

  DataView类通过RowFilter和RowStateFilter属性支持筛选 它还支持通过Find和FindRows方法搜索 其用法与DataTable类的Find方法类似

  Find方法

  设置DataView对象的Sort属性后 根据Sort属性所指定的列来调用Find方法 提供一个值或一组值作为参数 Find方法的返回值是一个整型值 代表查找到的行所在DataVier中的索引 如果没查找到符合条件的值 则返回          DataView vue=new DataView(tbl);        vue Sort= ContactName ;        int intIndex=vue Find( Fran Wilson );        if(intIndex<> )        Consol WriteLine(vue[intIndex][ CompanyName ]);

  FindRows方法

  DataTable的Find方法根据DataTable对象的PrimayKey属性中所指定的列进行搜索 所以至多返回一条符合条件的数据行 DataView的Find方法根据Sort属性所指定的列进行搜索 可能有多个符合条件的值 但其只返加一个符合条件的索引值

  DataView类提供FindRows方法来处理其返回的多个数据行 FindRows方法返回符合搜索条件的DataRowView对象数组          DataView vue=new DataView(tbl);        vue Sort= Country ;        DataRowView[] aRows=vue FindRows( Spain );        if(aRows Length== )        Consol WriteLine( No rows Find );

  修改DataRowView对象

  DataRowView修改DataView的一行数据类似DataRow修改DataTable的一行数据 DataRowView对象也有BeginEdit EndEdit CancelEdit和Delete方法

  DataRowView的AddNew方法返回一个新的DataRowView对象 但只到其调用EndEdit方法后 新行才被真正的添加到相应的DataTable中          DataView vue=new DataView(tbl);        DataRowView row=vue AddNew();        row[ …… ]= … ;        …        row EndEdit();

  DataView创建DataTable

  DataView类的ToTable方法返回一个DataTable对象 其中仅包括DataView的RowFilter属性设置可见的行          DataTable tblAllCustomers=new DataTable( Customers );        DataView vue=new DataView(tblAllCustomers);        vue RowFilter= Country= Spain ;        DataTable tblSpanishCustomers=vue ToTable( SpanishCustomers );

  以上代码由DataView创建的DataTable将包含DataView中所有列 可以通过DataView的ToTable的重载方法来控制生成的DataTable所包含的列          DataTable tblSpanishCustomers;        tblSpanishCustomers=vue ToTable( SpanishCustomers true         new string[] City Country );

cha138/Article/program/net/201311/11961

相关参考