Datatable  是一种常用的数据结构。数据类型有点类似于数据库中的表结构。在没有使用优秀的orm框架前,大部分的数据库的数据都是先变为Datatable 然后再通过代码转换变成 object。

鉴于Datatable在数据结构中的地位,ms 提供了丰富的属性和方法来操作Datatable(以前曾经专门打印过Datatable的文档,相关内容确实非常的多),此处专门记录下Datatable 如何进行排序和查找的。

ms提供了 Datatable.Select 的四种重载,基本解决了这个问题(.Net 3.5之后的 linq 也很优雅的解决了这个问题)

1)  Select()——获取所有 System.Data.DataRow 对象的数组。

2)  Select(string filterExpression)——按照主键顺序(如果没有主键,则按照添加顺序)获取与筛选条件相匹配的所有 System.Data.DataRow 对象的数组。

3)  Select(string filterExpression, string sort)——获取按照指定的排序顺序且与筛选条件相匹配的所有 System.Data.DataRow 对象的数组。

4)  Select(string filterExpression, string sort, DataViewRowState recordStates)——获取与排序顺序中的筛选器以及指定的状态相匹配的所有 System.Data.DataRow 对象的数组。

说明:

(1)Datatable.Select() ;   会获取到一个DataRow 的数组

(2)Datatable.Select(string ); string内容是一个表达式,相当于sql 中where 后边的语句,但是有些表达式无法使用,比如between

(3)Datatable.Select(string , string );第一个string 为表达式,用法同(2),第二个表示式是用来表示排序字符的 类似于 order by 后边的内容  如:

DataRow[] mDrs = dtGeographyAccount.Select(
                    string.Format("IsStockDay = 1 AND GeographyName like '%{0}%'", region),
                    "Date Asc");

(4)Select(string , string , DataViewRowState );    前两个string 不解释,第三个是枚举类型,因为Datatable中的行都是有状态的,此处可以对不同的状态进行筛选

另外 Datatable中对于列明是不敏感大小写的,如果需要区分大小写,需要将DataTable的caseSensitive属性设为true。

Datatable的查找和排序(Datatable.Select)的更多相关文章

  1. DataTable列查询加排序

    DataTable列查询加排序 DataRow[] drArray = dt.Select("ANLYCOM_ID='" + chSPrdtStblAnly.AnlyComId + ...

  2. (转)在JAVA实现DataTable对象(三)——DataTable对象实现

    大家都是行家,我就直接上代码了,我这个代码应该还是能看懂的,嘻嘻…. 1: import java.util.ArrayList; 2: import java.util.List; 3:   6: ...

  3. Oracle数据库作业-6 29、查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。 select tname,prof from teacher where depart = '计算机系' and prof not in ( select prof from teacher where depart 。

    29.查询选修编号为"3-105"课程且成绩至少高于选修编号为"3-245"的同学的Cno.Sno和Degree,并按Degree从高到低次序排序. selec ...

  4. 专题 查找与排序的Java代码实现(一)

    专题 查找与排序的Java代码实现(一) 查找(Searching) 线性查找(linear search) 属于无序查找算法,适合于存储结构为顺序存储或链接存储的线性表. 基本思想:从数据结构线形表 ...

  5. 20172302 《Java软件结构与数据结构》实验三:查找与排序实验报告

    课程:<Java软件结构与数据结构> 班级: 1723 姓名: 侯泽洋 学号:20172302 实验教师:王志强老师 实验日期:2018年11月19日 必修/选修: 必修 实验内容 (1) ...

  6. 20162327WJH第三次实验——查找与排序2

    20162327WJH第三次实验--查找与排序2 实 验 报 告 课程:程序设计与数据结构 班级: 1623 姓名: 王旌含 学号:20162327 成绩: 指导教师:娄嘉鹏 王志强 实验日期:11月 ...

  7. c# datarow[] 转换成 datatable, List<T> 转datatable

      c# datarow[] 转换成 datatable, List<T> 转datatable DdataRow[]转成Datatable private DataTable ToDat ...

  8. DataTable转Json,Json转DataTable

    // 页面加载时 /// </summary> /// <param name="sender"></param> /// <param ...

  9. C++ 中对vector<T*> 数组的查找和排序

    /* 2015-06-06 本文主要叙述对于vector<T*> (指针数组)如何进行find 操作下面的代码实现了Find,FindRange 模板函数, 解释了为什么std::find ...

随机推荐

  1. BFS 巡逻机器人

    巡逻机器人 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=83498#problem/F 题目大意: 机器人在一个矩形区域巡逻, ...

  2. [LintCode] LRU Cache 缓存器

    Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...

  3. [LintCode] Paint Fence 粉刷篱笆

    There is a fence with n posts, each post can be painted with one of the k colors.You have to paint a ...

  4. Linux_linux中profile、bashrc、bash_profile之间的区别和联系(转)

    /etc/profile:此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. 英文描述为: # /etc/p ...

  5. JS写四个图片滚动显示的效果

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. List集合对象根据字段排序

    //把需要比较的对象实现Comparable接口实现compareTo方法 public class Address implements Comparable<Address> { St ...

  7. FZU1894 单调队列

    S - 1019 Time Limit:1500MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Sta ...

  8. OCR磁盘的导出和导入、备份和恢复以及移动(ocrconfig命令的应用)

    数据库版本:10.2.0.1 一,使用导出.导入进行备份和恢复 Oracle推荐在对集群做调整时,比如增加.删除节点之前,应该对OCR做一个备份,可以使用export 备份到指定文件.如果做了repl ...

  9. iis上json解析失败404

    控制面板->打开或关闭windows功能->Internet信息服务->万维网服务->应用程序开发功能,勾选上“.net扩展性”和“ASP.NET”,保存后,重启IIS服务器. ...

  10. mysql语句中有引号的问题解决方案

    在mysql的查询.修改.插入.删除的sql语句里有引号如何处理? 例如: <? $name = "my name is xcxc"; $people = "i'm ...