无索引状态下比较DataTable的几种过滤方法效率
先构造一个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的几种过滤方法效率的更多相关文章
- C# Winform中无焦点状态下获取键盘输入或者USB扫描枪数据
类文件: C#类文件 using System; using System.Collections.Generic; using System.Text; using System.Runtime.I ...
- QT无窗口状态下对键盘事件的监听
Question:最近在搞linux下的一个客户端项目,需要接收键盘事件,但是又不能有界面,这种情况怎么处理呢? int main(int argc, char *argv[]) { QApplica ...
- [C#.Net]全局钩子实现USB扫码枪无焦点状态下扫入
https://www.cnblogs.com/masonlu/p/10105135.html
- 在数据库各种状态下查询DBID的五大类十种方法汇总
关于DBID: DBID是DataBase IDentifier的缩写,意思就是数据库的唯一标识符. 这个DBID在数据文件头和控制文件都是存在的,可以用于标示数据文件的归属. 对于不同数据库来说,D ...
- 关于无光盘无u盘状态下该如何安装系统
看到好东西,跟大家分享一下,需要装系统的可以作为参考资料 无光盘无u盘状态下该如何安装系统 重点 : 安装虚拟光驱(用来打开镜像文件) 一个你要安装的系统文件的iso镜像文件 http://www. ...
- UIButton在不同状态下显示不同背景色
参考自:原文地址(内容与原文并无区别,只是自己以后方便使用整理了一下) 1.UIButton的background是不支持在针对不同的状态显示不同的颜色. 2.UIButton的backgroundI ...
- [cocos2d-x·解Bug]关于cocos2d-x游戏在android锁屏状态下播放Bgm的解决方法
最近<宠物联萌>在三星App上发布遇到一个问题:如果用户在锁定屏幕时解锁解到一半时取消解锁,这时用cocos2d-x开发的游戏就会出现游戏Bgm会恢复播放,但手机屏幕仍然是锁屏状态的Bug ...
- jmeter测试本地myeclips调试状态下的tomcat程序死锁
在myeclipse调试状态下的tomcat程序,用jmeter测试,居然发生死锁,调试两天无果,直接运行tomcat而不通过myeclipse,无死锁,真是又好气又好笑..
- Elasticsearch 关键字:索引,类型,字段,索引状态,mapping,文档
1. 索引(_index)索引:说的就是数据库的名字.我这个说法是对应到咱经常使用的数据库. 结合es的插件 head 来看. 可以看到,我这个地方,就有这么几个索引,索引就是数据库,后面是这个数据库 ...
随机推荐
- 【JavaScript忍者秘籍】定时器
- jQuery method and examples
一:介绍: jQuery:是DOM和js的封装.jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多).现在大多数的pc端的网站都 ...
- CEPH经常出现slow request的排查解决
现象: 通过ceph -w日志经常发现有request blocked的问题(如果虚拟机系统跑在ceph上时,就会发现严重的卡顿现象) 排查: 1.通过dstat未发现有明显的瓶颈 (dstat -t ...
- OGRE的学习资源
本文介绍从哪儿开始学习OGRE(Object-Oriented Graphics Rendering Engine的简称,又叫做OGRE 3D),如何在网上找寻OGRE的学习资源. 首先是wikipe ...
- 修改VS 所有项目的Include目录和Lib目录
像以前的方法 在 工具--选项--项目和解决方案里的修改已经被弃用.
- DNS记录类型介绍(A记录、MX记录、NS记录等)
DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 建站名词解释:DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 泛域名 泛解析 域 ...
- http 学习 1-1 chapter1-HTTP概述
Web浏览器.服务器和相关的Web应用程序都是通过HTTP相互通信的.HTTP是现代全球因特网中使用的公共语言. 1.1HTTP – 因特网的多媒体信使 HTTP使用的是可靠的数据传输协议,确保数据在 ...
- 条件随机场(CRF) - 1 - 简介(转载)
转载自:http://www.68idc.cn/help/jiabenmake/qita/20160530618222.html 首先我们先弄懂什么是"条件随机场",然后再探索其详 ...
- dotproject 2.1.8 甘特图中文乱码解决
1.安装中文语言包 下载地址为http://www.dotproject.net/dpDownloads/Language_Packs/Chinese_Simplified_(GBK)/dotproj ...
- 手把手原生js简单轮播图
在团队带人,突然被人问到轮播图如何实现,进入前端领域有一年多了,但很久没自己写过,一直是用大牛写的插件,今天就写个简单的适合入门者学习的小教程.当然,轮播图的实现原理与设计模式有很多种,我这里讲的是用 ...