DataTable相关操作,筛选,取前N条数据,获取指定列数据2013-03-12 14:50 by Miracle520, 2667 阅读, 0 评论, 收藏编辑

 1         #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回
2 /// <summary>
3 /// DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回
4 /// eg:SortExprDataTable(dt,"Sex='男'","Time Desc",1)
5 /// </summary>
6 /// <param name="dt">传入的DataTable</param>
7 /// <param name="strExpr">筛选条件</param>
8 /// <param name="strSort">排序条件</param>
9 /// <param name="mode">1,直接用DefaultView按条件返回,效率较高;2,DataTable筛选,排序返回符合条件行组成的新DataTable</param>
10 public static DataTable SortDataTable(DataTable dt, string strExpr, string strSort, int mode)
11 {
12 switch (mode)
13 {
14 case 1:
15 //方法一 直接用DefaultView按条件返回
16 dt.DefaultView.RowFilter = strExpr;
17 dt.DefaultView.Sort = strSort;
18 return dt;
19 case 2:
20 //方法二 DataTable筛选,排序返回符合条件行组成的新DataTable
21 DataTable dt1 = new DataTable();
22 DataRow[] GetRows = dt.Select(strExpr, strSort);
23 //复制DataTable dt结构不包含数据
24 dt1 = dt.Clone();
25 foreach (DataRow row in GetRows)
26 {
27 dt1.Rows.Add(row.ItemArray);
28 }
29 return dt1;
30 default:
31 return dt;
32 }
33 }
34 #endregion
35 #region 获取DataTable前几条数据
36 /// <summary>
37 /// 获取DataTable前几条数据
38 /// </summary>
39 /// <param name="TopItem">前N条数据</param>
40 /// <param name="oDT">源DataTable</param>
41 /// <returns></returns>
42 public static DataTable DtSelectTop(int TopItem, DataTable oDT)
43 {
44 if (oDT.Rows.Count < TopItem) return oDT;
45
46 DataTable NewTable = oDT.Clone();
47 DataRow[] rows = oDT.Select("1=1");
48 for (int i = 0; i < TopItem; i++)
49 {
50 NewTable.ImportRow((DataRow)rows[i]);
51 }
52 return NewTable;
53 }
54 #endregion
55
56 #region 获取DataTable中指定列的数据
57 /// <summary>
58 /// 获取DataTable中指定列的数据
59 /// </summary>
60 /// <param name="dt">数据源</param>
61 /// <param name="tableName">新的DataTable的名词</param>
62 /// <param name="strColumns">指定的列名集合</param>
63 /// <returns>返回新的DataTable</returns>
64 public static DataTable GetTableColumn(DataTable dt, string tableName, params string[] strColumns)
65 {
66 DataTable dtn = new DataTable();
67 if (dt == null)
68 {
69 throw new ArgumentNullException("参数dt不能为null");
70 }
71 try
72 {
73 dtn = dt.DefaultView.ToTable(tableName, true, strColumns);
74 }
75 catch (Exception e)
76 {
77 throw new Exception(e.Message);
78 }
79 return dtn;
80 }
81 #endregion

DataTable相关操作,筛选,取前N条数据,获取指定列数据的更多相关文章

  1. DataTable相关操作,筛选,取前N条数据,去重复行,获取指定列数据

    #region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回      /// <summary>      /// Dat ...

  2. ORACLE/MYSQL/DB2等不同数据库取前几条记录

    选取数据库中记录的操作是最基础最频繁的,但往往实际应用中不会这么简单,会在选取记录的时候加上一些条件,比如取前几条记录,下面就总结了如何在ORACLE/MYSQL/DB2等一些热门数据库中执行取前几条 ...

  3. MySql多表关联,根据某列取前N条记录问题

    近来遇到一个问题:“MySql多表关联,根据某列取前N条记录”. 刚开始一直在想,SQL语句是否可以做到直接查询出来,但几经折磨,还是没能写出SQL语句,-------如果有大牛的话,望指点迷津.我把 ...

  4. MSSQL—按照某一列分组后取前N条记录

    以前在开发的时候遇到过一个需求,就是要按照某一列进行分组后取前几条数据,今天又有同事碰到了,帮解决了之后顺便写一篇博客记录一下. 首先先建一个基础数据表,代码如下: IF OBJECT_ID(N'Te ...

  5. oracle 取前10条记录

    1.oracle 取前10条记录 1) select * from tbname where rownum < 11; 2) select * from (select * from tbnam ...

  6. 当前时间、前n天、后n天、取前n条记录、从第n条开始取m条

    当前时间:NOW() 前n天:DATE_SUB(NOW(),INTERVAL n DAY) 后n天:DATE_SUB(NOW(),INTERVAL -n DAY) 取前n条记录:SELECT * FR ...

  7. Oracle 取前几条记录

    今天看了篇文章,对oracle取前几条数据的方式和说明,总结比较全,学习了,做个记录点.oracle 取前10条记录 以下内容是原始文章内容,用于做留存阅读. 1.oracle 取前10条记录 1) ...

  8. oracle和sql server中,取前10条数据语法的区别

    在sql server中,取数据中前10条语句,我们可以用top 10 这样语句,但是oracle就没有这个函数,接下来介绍它们之间的区别 1.sql server 取前10语句和随机10条的语法 - ...

  9. mysql使用GROUP BY分组实现取前N条记录的方法

    MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道 ...

随机推荐

  1. bitnami redmine 安装插件

    https://wiki.bitnami.com/Applications/BitNami_Redmine_Stack#How_to_install_a_plugin_on_Redmine.3f 版权 ...

  2. OpenCV视频播放方法

    OpenCV视频播放方法 今天折腾了一下OpenCV的视频播放功能,希望能对项目又帮助- 代码还是非常easy的,仅仅是之前遇到点小麻烦,找不到cvCreateFileCapture函数的定义,花了一 ...

  3. UVa 10190 - Divide, But Not Quite Conquer!

    称号:给你第一个任期的等比数列和倒数公比,最后一个条目假定1这一系列的输出,否则输出Boring!. 分析:数学.递减的.所以公比的倒数一定要大于1.即m > 1. 然后在附加一个条件n  &g ...

  4. oracle connect by 说明

    Oracle能够通过START WITH . . . CONNECT BY . . .子句来实现SQL分层查询,这递归查询 例如: select level||'月' 月份 from dual con ...

  5. MVC把随机产生的字符串转换为图片

    原文:MVC把随机产生的字符串转换为图片 Insus.NET在这篇中<在ASP.NET MVC应用程序中随机获取一个字符串>http://www.cnblogs.com/insus/p/3 ...

  6. HDU 2414 Chessboard Dance (力模拟)

    主题链接:HDU 2414 Chessboard Dance 意甲冠军:鉴于地图,>,<,^,v的方向,字母相当于是箱子,箱子能够推出边界.人保证不会做出边界.以下输入指令,依照指令走,输 ...

  7. 新秀学习SSH(十四)——Spring集装箱AOP其原理——动态代理

    之前写了一篇文章IOC该博客--<Spring容器IOC解析及简单实现>,今天再来聊聊AOP.大家都知道Spring的两大特性是IOC和AOP. IOC负责将对象动态的注入到容器,从而达到 ...

  8. .net卸载程序制作

    原文:.net卸载程序制作 方法一: 在打包项目中添加文件msiexec.exe(一般在c:\windows\system32(系统目录中)找到). 在文件系统视图中选择应用程序文件,在msiexec ...

  9. ThreadLocal的内存泄露(转)

    ThreadLocal的目的就是为每一个使用ThreadLocal的线程都提供一个值,让该值和使用它的线程绑定,当然每一个线程都可以独立地改变它绑定的值.如果需要隔离多个线程之间的共享冲突,可以使用T ...

  10. PHP操作XML文件学习笔记

    原文:PHP操作XML文件学习笔记 XML文件属于标签语言,可以通过自定义标签存储数据,其主要作用也是作为存储数据. 对于XML的操作包括遍历,生成,修改,删除等其他类似的操作.PHP对于XML的操作 ...