先构造一个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. Maven生命周期

    Maven的生命周期抽象了构建的各个步骤,定义了他们的次序,但没有提供实现.Maven设计了插件机制.每个构建步骤都可以绑定一个或多个插件行为,而且Maven为大多数构建步骤编写并绑定了默认插件. M ...

  2. Impossible to load an image in xcassets on bundle

    Impossible to load an image in xcassets on bundle up vote5down votefavorite 3 I need to include imag ...

  3. C文件的格式化工具(astyle)

    工具简介 astyle用于格式化 C,C++,C#, Java等文件,方便将代码风格转变成预期的效果.如改变缩进方式.括号风格等等. 工具的安装 环境 ubuntu 14.04 $apt-get in ...

  4. git学习:关于origin和master

    [转载请注明出处]http://www.cnblogs.com/mashiqi 2016/10/27 本文主要是对这篇博客文章的理解. git的服务器端(remote)端包含多个repository, ...

  5. 一些js小知识点整理

    string.substring(a,b)   从a点开始截取,到b点结束 string.substr(a,b)    从a点开始截取,截取b个 BOM的四个对象,navigator.screen.l ...

  6. Windows下Nginx的安装与配置

    Nginx ("engine x") 是一款高性能的,轻量级的HTTP Web 服务器 和 反向代理服务器及电子邮件 IMAP/POP3/SMTP 代理服务器. Nginx 是由俄 ...

  7. python 后台爆破工具

    sys:使用sys模块获得脚本的参数 queue模块,创建一个“队列”对象 time 模块     Python time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数). fin ...

  8. 个人制作-css+html旋转立方体的制作

    源代码: <!DOCTYPE html><html><head>    <title></title>    <meta charse ...

  9. jsp连接SQL Server数据库的方式

    方式1:JDBC连接方式 Connection conn = null; Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDrive ...

  10. FPGA书籍

    Xilinx FPGA开发实用教程(第2版) 徐文波,田耘 著