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. SDUT oj 3005 打怪升级(内存搜索)

    当比赛一直纠缠骑2如何做一个非常大的数量,数组不开啊...后来他们发现自己很傻啊,该数不超过最大10什么,这个上限就是力量100什么.. .. 其它的就是记忆化搜索啊,还有就是加一点力量的瓶子当时就要 ...

  2. BZOJ 1096 ZJOI2007 仓库建设 边坡优化

    标题效果:特定n植物,其中一些建筑仓库,有一点使,假设没有仓库仓库向右仓库.最低消费要求 非常easy边坡优化--在此之前刷坡优化的情况下,即使这道题怎么错过 订购f[i]作为i点建设化妆i花费所有安 ...

  3. 小说mvvm

    与多样化和复杂的前,设计模式不再是后端专有名词.从最初的面向对象的,框架制定了到现在为止mvc等一下,今天,它主要是关于Model-View-ViewModel(MVVM). 对于mvc大家可能都会相 ...

  4. HTML5中类jQuery选择器querySelector的高级使用 document.querySelectorAll.bind(document);

    基本用法 querySelector 该方法返回满足条件的单个元素.按照深度优先和先序遍历的原则使用参数提供的CSS选择器在DOM进行查找,返回第一个满足条件的元素. ----> querySe ...

  5. 手把手教你如何加入到github的开源世界! (转)

    我曾经一直想加入到开源项目中,但是因为没有人指导流程,网上看了很多,基本都是说了个大概,如果你也是一个初出茅庐的人,那么,我将以自己提交的一次开源代码为例,教会你步入开源的世界. 1,首先登陆到htt ...

  6. HDU 1272 小希迷宫(并检查集合)

    意甲冠军:被判处无向图无环和连接无处不在 思考:并检查集合,trap 您可能有一个直接输入0 0 并且....合并的时候按某一个方向会爆栈,爆了好几次...下次考虑一下直接递归找祖先吧 #includ ...

  7. UVa 699 落叶

    意甲冠军:我几乎不记得的题意!.! 它是一个长坑..我们从根节点开始,留下每一步,保存横坐标1,正确的一步加上横坐标1. 那么同样的横坐标统计data值总和. 思维:我来想,这可以递归成就.上就能够算 ...

  8. FZU2126:消除类游戏(DP)

    Problem Description S近期在玩一种游戏. 这样的游戏的规则是一个一个地往一个栈里放有颜色的球,当栈顶连续k个球颜色同样时.这k个球立马同一时候消失. 如今S已经往栈里放了n个球,他 ...

  9. CentOS7 安装Hadoop集群环境

    先按照上一篇安装与配置好CentOS以及zookeeper http://www.cnblogs.com/dopeter/p/4609276.html 本章介绍在CentOS搭建Hadoop集群环境 ...

  10. ORM-Dapper+DapperExtensions

    ORM-Dapper+DapperExtensions 现在成熟的ORM比比皆是,这里只介绍Dapper的使用(最起码我在使用它,已经运用到项目中,小伙伴们反馈还可以). 优点: 1.开源.轻量.小巧 ...