先构造一个DataTable:

 public DataTable GetDataTable()
{
DataTable dtTmp = new DataTable();
dtTmp.Columns.Add("", typeof(string));
dtTmp.Columns.Add("", typeof(string));
dtTmp.Columns.Add("", typeof(string));
dtTmp.Columns.Add("", typeof(string));
dtTmp.Columns.Add("", typeof(string));
dtTmp.Columns.Add("", typeof(string));
dtTmp.Columns.Add("", typeof(string));
dtTmp.Columns.Add("", typeof(string)); for (int i = ; i < ; i++)
{
DataRow dr = dtTmp.NewRow(); dr[""] = "数据" + i;
dr[""] = "数据" + i;
dr[""] = "数据" + i;
dr[""] = "数据" + i;
dr[""] = "数据" + i;
dr[""] = "数据" + i;
dr[""] = "数据" + i;
dr[""] = "数据" + i; dtTmp.Rows.Add(dr);
} return dtTmp;
}

建立单元测试项目:

 [TestClass]
public class UnitTest1
{
Class1 cs1;
DataTable dt;
public UnitTest1()
{
cs1 = new Class1();
dt = cs1.GetDataTable();
} [TestMethod]
public void TestMethod0()
{
/*空测试项目*/
} [TestMethod]
public void TestMethod1()
{
DataTable dtt = dt.AsEnumerable().Where(o => o.Field<string>("").Contains("")).AsDataView().ToTable();
} [TestMethod]
public void TestMethod2()
{
DataTable dtt = (from a in dt.AsEnumerable() where a.Field<string>("").Contains("") select a).AsDataView().ToTable();
} [TestMethod]
public void TestMethod3()
{
dt.AsDataView().RowFilter = "[1] like '%0%'";
DataTable dtt = dt;
} [TestMethod]
public void TestMethod4()
{
DataTable dtt = dt.Select("[1] like '%" + "" + "%'").CopyToDataTable();
}
}

运行后看效率:

1000行数据量:

10000行数据量:

100000行数据量:

1000000行数据量:

DataTable无索引状态下测试,也是日常最常用的数据过滤方法之一,

再大就不测了,数据量太大放DataTable本来就不适合,可以考虑nosql了,效率吗,如上,仅供参考,欢迎拍砖.

无索引状态下比较DataTable的几种过滤方法效率的更多相关文章

  1. C# Winform中无焦点状态下获取键盘输入或者USB扫描枪数据

    类文件: C#类文件 using System; using System.Collections.Generic; using System.Text; using System.Runtime.I ...

  2. QT无窗口状态下对键盘事件的监听

    Question:最近在搞linux下的一个客户端项目,需要接收键盘事件,但是又不能有界面,这种情况怎么处理呢? int main(int argc, char *argv[]) { QApplica ...

  3. [C#.Net]全局钩子实现USB扫码枪无焦点状态下扫入

    https://www.cnblogs.com/masonlu/p/10105135.html

  4. 在数据库各种状态下查询DBID的五大类十种方法汇总

    关于DBID: DBID是DataBase IDentifier的缩写,意思就是数据库的唯一标识符. 这个DBID在数据文件头和控制文件都是存在的,可以用于标示数据文件的归属. 对于不同数据库来说,D ...

  5. 关于无光盘无u盘状态下该如何安装系统

    看到好东西,跟大家分享一下,需要装系统的可以作为参考资料 无光盘无u盘状态下该如何安装系统 重点  : 安装虚拟光驱(用来打开镜像文件) 一个你要安装的系统文件的iso镜像文件 http://www. ...

  6. UIButton在不同状态下显示不同背景色

    参考自:原文地址(内容与原文并无区别,只是自己以后方便使用整理了一下) 1.UIButton的background是不支持在针对不同的状态显示不同的颜色. 2.UIButton的backgroundI ...

  7. [cocos2d-x·解Bug]关于cocos2d-x游戏在android锁屏状态下播放Bgm的解决方法

    最近<宠物联萌>在三星App上发布遇到一个问题:如果用户在锁定屏幕时解锁解到一半时取消解锁,这时用cocos2d-x开发的游戏就会出现游戏Bgm会恢复播放,但手机屏幕仍然是锁屏状态的Bug ...

  8. jmeter测试本地myeclips调试状态下的tomcat程序死锁

    在myeclipse调试状态下的tomcat程序,用jmeter测试,居然发生死锁,调试两天无果,直接运行tomcat而不通过myeclipse,无死锁,真是又好气又好笑..

  9. Elasticsearch 关键字:索引,类型,字段,索引状态,mapping,文档

    1. 索引(_index)索引:说的就是数据库的名字.我这个说法是对应到咱经常使用的数据库. 结合es的插件 head 来看. 可以看到,我这个地方,就有这么几个索引,索引就是数据库,后面是这个数据库 ...

随机推荐

  1. Cocos2dx对精灵的优化

    cocos2dx针对游戏设计的不同方面会有不同的优化方案,可以对声音,对内存,对图片格式,对色彩等等进行优化.有关这些方面的方法请大家查找其他的文章.我今天要说的是如何对精灵进行优化,程序中我们用到的 ...

  2. PowerDesigner自增列问题

  3. eclipse中一些设置&配置项

    在学习过程中出现的一些问题,以备忘: 1.eclipse中手动生成项目目录结构                 按照这个项目结构建立文件夹,build path -configure build pa ...

  4. Android中常见功能包描述(转)

    在Android中,各种包写成android.*的方式,重要包的描述如下所示:android.app :提供高层的程序模型.提供基本的运行环境android.content:包含各种的对设备上的数据进 ...

  5. C++构造函数与虚表覆盖

    在涉及到虚函数的情况下,C++构造函数的构造顺序为:先调用构造函数,虚表指针初始化,用户代码:如涉及到多重继承情况,初始化顺序为基类.子类(从左至右),假设一个类的继承情况如下图,其初始化顺序为:Po ...

  6. C++学习之路——1.linux下环境搭建

    学习之路,可说各有各的看法和方法.对于我来说,完全是兴趣一下子来了,脑壳发热吧.就想有个干净的环境,只想着与程序有关的东西练一练. 目前想学习C++,可是打开VC++6,再安了VS2010.VS201 ...

  7. MySQL5.7.11安装

    1.官网下载mysql-5.7.11-winx64.zip 2.将压缩包解压至D:\Program Files,配置环境变量

  8. 内省(introspector)------>JavaBean

    内省(introspector)------>JavaBean    1.问什么要学内省?        开发框架时,经常需要Java对象的属性来来封装程序的数据,每次使用反射技术完成此操作过于 ...

  9. php-长文章分页函数

    <?php function ff_page($content,$page) { global $expert_id; $PageLength = 2000; //每页字数 $CLength = ...

  10. 一个大数据的demo

    package test.admin; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Fil ...