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

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

相关参考

知识大全 Java中的排序和搜索

Java中的排序和搜索  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Java添加了自己的一套实

知识大全 数据结构考研分类复习真题 第十章 答案[39]

  ()堆排序是对树型选择排序的改进克服了树型选择排序的缺点其定义在前面已多次谈到请参见上面四应用题的题和题()筛选是堆排序的基础算法由于堆可以看作具有n个结点的完全二叉树建堆过程是从待排序序列第一个

知识大全 数据结构考研分类复习真题 第五章 答案[39]

  [题目分析]本题属于排序问题只是排出正负不排出大小可在数组首尾设两个指针i和ji自小至大搜索到负数停止j自大至小搜索到正数停止然后i和j所指数据交换继续以上过程直到i=j为止  voidArran

知识大全 数据结构考研分类复习真题 第五章 答案[44]

  ()在n个正整数中选出k(k<<m)个最大的数应使用堆排序方法对深度为h的堆筛选算法中关键字的比较次数至多为(h)次建堆总共进行的关键字比较次数不超过n堆排序在最坏情况下的时间复杂度是

知识大全 数据结构考研分类复习真题 第十章 答案[47]

  [题目分析]利用快速排序思想解决由于要求对每粒砾石的颜色只能看一次设个指针ij和k分别指向红色白色砾石的后一位置和待处理的当前元素从k=n开始从右向左搜索若该元素是兰色则元素不动指针左移(即k)若

知识大全 oracle数据字符集和排序

  今天难得有点小时间实际操作了一下关于oracle数据库中的字符集和排序相关的命令特此整理出来以备后用  Java代码  SQL>select*fromv$nls_valid_valueswh

知识大全 数据结构考研分类复习真题 第十章 答案[9]

  从节省存储空间考虑先选堆排序再选快速排序最后选择归并排序  从排序结果的稳定性考虑选择归并排序堆排序和快速排序都是不稳定排序  从平均情况下排序最快考虑先选择快速排序  ()堆排序快速排序归并排序

知识大全 数据结构考研分类复习真题 第十章 排序[36]

  .对于堆积排序法快速排序法和归并排序法若仅从节省存储空间考虑则应该首先选取其中哪种方法?其次选取哪种方法?若仅考虑排序结果的稳定性则应该选取其中哪种方法?若仅从平均情况下排序最快这一点考虑则应该选

知识大全 数据结构 10.16 链式基数排序

  类似于表插入排序附设指针数组将顺序表视作一个静态链表利用修改指针实现分配和收集同时设置rd个队列的头指针和尾指针分别指示各队列的头结点和尾结点在链表中的位置  首先初始化空队列即将每个队列的头指针

知识大全 数据结构考研分类复习真题 第十章 排序[21]

  .归并排序辅助存储为O()(   )【青岛大学四(分)】  .在分配排序时最高位优先分配法比最低位优先分配法简单( )【上海交通大学一】  .冒泡排序和快速