DataTable相关操作,筛选,取前N条数据,获取指定列数据
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条数据,获取指定列数据的更多相关文章
- DataTable相关操作,筛选,取前N条数据,去重复行,获取指定列数据
#region DataTable筛选,排序返回符合条件行组成的新DataTable或直接用DefaultView按条件返回 /// <summary> /// Dat ...
- ORACLE/MYSQL/DB2等不同数据库取前几条记录
选取数据库中记录的操作是最基础最频繁的,但往往实际应用中不会这么简单,会在选取记录的时候加上一些条件,比如取前几条记录,下面就总结了如何在ORACLE/MYSQL/DB2等一些热门数据库中执行取前几条 ...
- MySql多表关联,根据某列取前N条记录问题
近来遇到一个问题:“MySql多表关联,根据某列取前N条记录”. 刚开始一直在想,SQL语句是否可以做到直接查询出来,但几经折磨,还是没能写出SQL语句,-------如果有大牛的话,望指点迷津.我把 ...
- MSSQL—按照某一列分组后取前N条记录
以前在开发的时候遇到过一个需求,就是要按照某一列进行分组后取前几条数据,今天又有同事碰到了,帮解决了之后顺便写一篇博客记录一下. 首先先建一个基础数据表,代码如下: IF OBJECT_ID(N'Te ...
- oracle 取前10条记录
1.oracle 取前10条记录 1) select * from tbname where rownum < 11; 2) select * from (select * from tbnam ...
- 当前时间、前n天、后n天、取前n条记录、从第n条开始取m条
当前时间:NOW() 前n天:DATE_SUB(NOW(),INTERVAL n DAY) 后n天:DATE_SUB(NOW(),INTERVAL -n DAY) 取前n条记录:SELECT * FR ...
- Oracle 取前几条记录
今天看了篇文章,对oracle取前几条数据的方式和说明,总结比较全,学习了,做个记录点.oracle 取前10条记录 以下内容是原始文章内容,用于做留存阅读. 1.oracle 取前10条记录 1) ...
- oracle和sql server中,取前10条数据语法的区别
在sql server中,取数据中前10条语句,我们可以用top 10 这样语句,但是oracle就没有这个函数,接下来介绍它们之间的区别 1.sql server 取前10语句和随机10条的语法 - ...
- mysql使用GROUP BY分组实现取前N条记录的方法
MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道 ...
随机推荐
- 我有DIY一Android遥控-所有开源
我有DIY一Android遥控-所有开源 1.试用 记得宋宝华在「设备驱动开发具体解释」提出一个这种理论「软件和硬件互相渗透对方的领地」,这次证明还是确实是这样,使用上层APP软件加上简单的更为简单的 ...
- Android开发技巧——PagerAdapter再简单的包
再次内容View的ViewPager该适配器PagerAdapter简包,支持List数据与SparseArray数据.随着更新的浏览功能. 首先,首先贴上顶部抽象类代码: /* * Date: 14 ...
- structs2注解+jsp+ajax实现post异步载入select
流程: 1.点击载入btn发起异步请求post 2.后台处理请求返回数据 3.前端获取数据成功,对数据进行处理 前端: html:首先要导入jq包,不然怎么用ajax呢. <script typ ...
- nginx+tomcat实现动静分离(转)
本文设计的动静分离结构 在本文中,我们将静态资源放在 A 主机的一个目录上,将动态程序放在 B 主机上,同时在 A 上安装 Nginx 并且在 B 上安装 Tomcat.配置 Nginx,当请求的是 ...
- MapReduce 规划 系列的12 使用Hadoop Streaming技术集成newLISP文字
本文example6环境与前Hadoop 1.x异,于Hadoop 2.x环境测试. 功能与前面相同的日志处理程序. 第一newLISP文字,游玩mapper任务.于stdin读取文本数据,将did由 ...
- Docker contanier comunication with route
2台宿主机,hslave1 192.168.1.153, hslave2 192.168.1.154 修改网段 docker0默认网段是172.17.0.0/16,修改154机器的docker0的网段 ...
- 求N!末尾的0的个数(找规律+递归)
0\'s Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描写叙述 计算整数n!(n的阶乘)末尾有多少个0. 输入 第一行输入一个数T代 ...
- UVA11080- Place the Guards(二分图染色)
题目链接 题意:放最少的士兵去监视全部的道路, 但士兵不可相邻,符合的话,就输出最少的士兵数,否则输出-1 思路:事实上就是二分图染色,即黑白染色,然后选择黑白染色最少的那个颜色累加,但要注意可能有多 ...
- php_DWZ-JUI中碰到的问题解决方法详解(thinkphp+dwz)
原文:php_DWZ-JUI中碰到的问题解决方法详解(thinkphp+dwz) 折腾了两天,dwz删除后,数据不能自动刷新,解决方案,直接看图 . 1. 删除.修改状态后无法刷新记录: 在dwz. ...
- wsdl生成的客户端
首先, 你要先把你的WS服务启动起来,就是 比如ht tp:/ /localhost:8080/Example/services/HelloWorldService?wsdl然后在你的另一个项目中建一 ...