DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Datatable中经常用到的一个方法——Select,微软提供了四个函数的重载,分别是

Select()

Select(string filterExpression)

Select(string filterExpression, string sort)

Select(string filterExpression,string sort, DataViewRowState record States)。

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. using System;
  2.  
  3. using System.Collections.Generic;
  4.  
  5. using System.Text;
  6.  
  7. using System.Data;
  8.  
  9. namespace TestDataTableSelect
  10.  
  11. {
  12.  
  13. class Program
  14.  
  15. {
  16.  
  17. static DataTable dt = new DataTable();
  18.  
  19. static void Main(string[] args)
  20.  
  21. {
  22.  
  23. DataColumn dc1 = new DataColumn("id");
  24.  
  25. dc1.DataType=typeof(int);
  26.  
  27. DataColumn dc2 = new DataColumn("name");
  28.  
  29. dc2.DataType=typeof(System.String);
  30.  
  31. dt.Columns.Add(dc1);
  32.  
  33. dt.Columns.Add(dc2);
  34.  
  35. for (int i = 1; i <=10;i++ )
  36.  
  37. {
  38.  
  39. DataRow dr = dt.NewRow();
  40.  
  41. if (i <= 5)
  42.  
  43. {
  44.  
  45. dr[0] = i;
  46.  
  47. dr[1] = i + "--" + "hello";
  48.  
  49. }
  50.  
  51. else
  52.  
  53. {
  54.  
  55. dr[0] = i;
  56.  
  57. dr[1] = i + "--" + "nihao";
  58.  
  59. }
  60.  
  61. dt.Rows.Add(dr);
  62.  
  63. }
  64.  
  65. Select();
  66.  
  67. Select("id>='3' and name='3--hello'");//支持and
  68.  
  69. Select("id>='3' or id='1'");//支持or
  70.  
  71. Select("name like '%hello%'");//支持like
  72.  
  73. Select("id>5","id desc");
  74.  
  75. Select("id>5", "id desc",DataViewRowState.Added);
  76.  
  77. }
  78.  
  79. private static void Select()
  80.  
  81. {
  82.  
  83. DataRow[] arrayDR = dt.Select();
  84.  
  85. foreach(DataRow dr in arrayDR)
  86.  
  87. {
  88.  
  89. Console.WriteLine(dr[0].ToString()+" "+dr[1].ToString());
  90.  
  91. }
  92.  
  93. Console.ReadLine();
  94.  
  95. }
  96.  
  97. private static void Select(string filterExpression)
  98.  
  99. {
  100.  
  101. DataRow[] arrayDR = dt.Select(filterExpression);
  102.  
  103. foreach (DataRow dr in arrayDR)
  104.  
  105. {
  106.  
  107. Console.WriteLine(dr[0].ToString() + " " + dr[1].ToString());
  108.  
  109. }
  110.  
  111. Console.ReadLine();
  112.  
  113. }
  114.  
  115. private static void Select(string filterExpression, string sort)
  116.  
  117. {
  118.  
  119. DataRow[] arrayDR = dt.Select(filterExpression,sort);
  120.  
  121. foreach (DataRow dr in arrayDR)
  122.  
  123. {
  124.  
  125. Console.WriteLine(dr[0].ToString() + " " + dr[1].ToString());
  126.  
  127. }
  128.  
  129. Console.ReadLine();
  130.  
  131. }
  132.  
  133. private static void Select(string filterExpression, string sort, DataViewRowState recordStates)
  134.  
  135. {
  136.  
  137. DataRow[] arrayDR = dt.Select(filterExpression, sort,recordStates);
  138.  
  139. foreach (DataRow dr in arrayDR)
  140.  
  141. {
  142.  
  143. Console.WriteLine(dr[0].ToString() + " " + dr[1].ToString());
  144.  
  145. }
  146.  
  147. Console.ReadLine();
  148.  
  149. }
  150.  
  151. }
  152.  
  153. }

  注意事项:上面的Select操作是大小写不敏感的(记录的字段不敏感),如果需要区分大小写,需要将DataTable的caseSensitive属性设为true。

Datatable的Select()方法简介的更多相关文章

  1. C# DataTable的Select()方法不支持 != 判断

    异常描述: 用户代码未处理 System.Data.SyntaxErrorException HResult=-2146232032 Message=无法解释位置 23 的标记“!”. Source= ...

  2. C# Datatable的Select方法

    lubiaopan 原文 Datatable的Select()方法简介 DataTable是我们在进行开发时经常用到的一个类,并且经常需要对DataTable中的数据进行筛选等操作,下面就介绍一下Da ...

  3. [c#基础]DataTable的Select方法

    引言 可以说DataTable存放数据的一个离线数据库,将数据一下加载到内存,而DataReader是在线查询,而且只进形式的查询,如果后退一步,就不可能了,DataTable操作非常方便,但也有缺点 ...

  4. DataTable的Select()方法

    DataRow[] partno = dtPack.Select("PK_SOHEAD = " + pk_sohead + " AND PART_NO = '" ...

  5. 关于DataTable.Select方法偶尔无法正确查到数据的处理方法

    项目中经常用DataTable在内存中存储并操作数据,在进行报表开发的时候,报表的各种过滤功能用这个内存表可以大现身手,但最近在使用过程中却遇到一个奇怪的现象,现将该问题及处理方法记录一下.这是在做护 ...

  6. Datatable的Select()

    利用datatable的select方法筛选出符合条件的datarow进行操作 Select() Select(string filterExpression) Select(string filte ...

  7. C# Datatable.Select()用法简介

    dt为一个DataTable,以dt为例说明dt.select()方法的功能: 1.dt.Select() 获取所有行数 例:Datarow[] drs=dt.Select(); 此时drs为dt数据 ...

  8. [datatable]关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法

    -- :09关于在DataTable中执行DataTable.Select("条件")返回DataTable的解决方法 在实际编程工程中,常常遇到这样的情况:DataTable并不 ...

  9. Thinkphp中的volist标签(查询数据集(select方法)的结果输出)用法简介

    参考网址:http://camnpr.com/archives/1515.html 通常volist标签多用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数 ...

随机推荐

  1. nl2br

    PHP中   在字符串所有新行之前插入 HTML 换行标记 说明 string nl2br ( string $string [, bool $is_xhtml = true ] ) 在字符串 str ...

  2. SqlSever基础 rtrim与ltrim嵌套使用 除去字符串左右两边的空格

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  3. 【转载】ADO,OLEDB,ODBC,DAO的区别

    原文:ADO,OLEDB,ODBC,DAO的区别 ODBC(Open Database Connectivity,开放数据库互连) 1992年,微软公司开放服务结构(WOSA,Windows Open ...

  4. 【转载】创建和使用动态链接库 (C++)

    原文:http://blog.csdn.net/handforcpp/article/details/3478254 也可参考MSDN: 演练:创建和使用动态链接库 (C++) 我们将创建的第一种类型 ...

  5. 【mark】自己整合的vi/vim命令

    又发现一篇很好的 http://blog.chinaunix.net/uid-16759545-id-4891666.html 又发现一个很好的系列:有空闲要精读一下: http://www.cnbl ...

  6. change the walltime for currently running PBS job (qalter pbs)

    qalter jobid -l walltime=X e.g.qalter 377470.manager -l walltime=2222:00:00qalter: Unauthorized Requ ...

  7. [HDOJ1175]连连看

    原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1175 连连看 Time Limit: 20000/10000 MS (Java/Others)     ...

  8. return、 return false的用法

    1. return返回null,起到中断方法执行的效果,只要不return false事件处理函数将会继续执行,表单将提交2. return false,事件处理函数会取消事件,不再继续向下执行.比如 ...

  9. phpcms标签大全V9

    转自:http://blog.csdn.net/cloudday/article/details/7343448调用头部 尾部 {template "content"," ...

  10. ZOJ-2362 Beloved Sons 最大权值匹配

    题意:国王有N个儿子,现在每个儿子结婚都能够获得一定的喜悦值,王子编号为1-N,有N个女孩的编号同样为1-N,每个王子心中都有心仪的女孩,现在问如果安排,能够使得题中给定的式子和最大. 分析:其实题目 ...