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. Java多线程&lt;1&gt;

    1.Java多线程的概念: 线(Thread):它指的是一个任务的从开始执行流程到结束. 穿线提供执行任务的机构.供java条款.在一个程序可以启动多个并发线程.候执行. 在单处理器系统中,多个线程共 ...

  2. LAN远程重启server安全方法

    原创文章.转载请注明出处.(百度经验:http://jingyan.baidu.com/article/454316abaadc41f7a7c03a13.html) 在局域网中,管理和操作server ...

  3. C# 字符串知识整理

    新知识点,只是对于本人来说而已. 系统处理文本的方式 [新知识点].NET Framework .NET Framework的定义:其包含了一个公共语言运行时(Common Language Runt ...

  4. ORACLE 创建表空间、用户、授权

    1.创建表空间 create tablespace TEST  logging datafile 'e:\app\administrator\oradata\orcl\TEST.dbf' size 1 ...

  5. quick-cocos2d-x游戏开发【5】——创建菜单

    一个菜单是游戏中的一个基本要素,quick在里面menuItem有两个包.一个是图片菜单.一个文本菜单. 一个.图片菜单ui.newImageMenuItem(params) 參数: image: 正 ...

  6. Content://sms

    package com.example.sms; import android.app.Activity; import android.app.Notification; import androi ...

  7. (大数据工程师学习路径)第三步 Git Community Book----基本用法(下)

    一.比较提交 - Git Diff 1.比较提交 - Git Diff 你可以用 git diff 来比较项目中任意两个版本的差异. $ git diff master..test 上面这条命令只显示 ...

  8. thinkphp学习笔记8—命名空间

    原文:thinkphp学习笔记8-命名空间 新版本(3.2)中采用命名空间的方式定义和加载类库文件,解决多个模块之间的冲突问题,并实现了更加高效的自动加载机制. 需要给类库定义所在的命名空间,命名空间 ...

  9. TortoiseGit安装与配置(转)

    TortoiseGit 简称 tgit, 中文名海龟Git. 海龟Git只支持神器 Windows 系统, 有一个前辈海龟SVN, TortoiseSVN和TortoiseGit都是非常优秀的开源的版 ...

  10. ruby简单的基本 6

    模 像类似的模块,那里 class method 和 instance method.module 没有new不能生成对象的例子其中 class method 所谓的模块在模块化的方法,它能够直接调用 ...