遍历DataTable内存数据的三种方法性能对比
http://www.cnblogs.com/guowei1027/archive/2009/12/15/1624699.html
前几年曾经碰到一个生成递归树形菜单的功能,由于系统比较庞大,有300-400个菜单项,把这些菜单一次性递归加载,的确需要耗费一些时间。
当然若是动态加载什么的,那就不会有太多麻烦了,加载这么多菜单时,不同的解决方法的确差别很大。
第一种写法,每次循环遍历表,这应该是最普通的做法,结果运行速度比较慢,效果有些难以忍受。
for (int i = dataTable.Rows.Count - 1; i >= 0; i--)
{
DataRow dataRow = dataTable.Rows[i];
?? = dataRow[fieldParentID].ToString();
}
第二种写法,采用 foreach 的遍历方法,效果几乎与第一个没什么本质的差别,最终效果还是有些难以忍受。
foreach (DataRow dataRow in dataTable.Rows)
{
?? = dataRow[fieldParentID].ToString();
}
第三种写法,想了几天,尝试了另外一种方法,用 dataTable.Select 方法,效果非常良好,运行速度,比前2个快很多很多,有明显的差距。
先把需要的数据Select 出来,然后再循环遍历获得的dataRows结果,虽然我没做过具体的数据,但是的确有很明显的体会。
DataRow[] dataRows = null;
dataRows = dataTable.Select(fieldParentID + "='" + treeNode.Tag.ToString() + "'", dataTable.DefaultView.Sort);
foreach (DataRow dataRow in dataRows)
{
DataRow dataRow = dataTable.Rows[i];
?? = dataRow[fieldParentID].ToString();
}
转载于:https://www.cnblogs.com/carl2380/archive/2011/10/31/2229938.html
遍历DataTable内存数据的三种方法性能对比相关推荐
- mysql如何防止插入重复数据_防止MySQL重复插入数据的三种方法
新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...
- python csv库,Python 中导入csv数据的三种方法
Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...
- 如何安全的在不同工程间安全地迁移asset数据?三种方法
如何安全的在不同工程间安全地迁移asset数据?三种方法 答: 1.将Assets和Library一起迁移 2.导出包package 3.用unity自带的assets Server功能 posted ...
- mysql 禁止插入重复数据_防止MySQL重复插入数据的三种方法
新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...
- Android 免root 备份数据,教你安卓手机免Root恢复手机数据的三种方法
说到安卓手机,人们对它的第一印象就是开源.自由.可定制.市面上大多数系统,比如Flyme.MIUI其实都是由安卓内核再加上一层自己的包装罢了.所以你会看到手机上一堆预装软件卸载不掉,这本质上就是手机厂 ...
- 用旭日图展示数据的三种方法
什么是旭日图? 旭日图(Sunburst Chart)是一种现代饼图,它超越传统的饼图和环图,能表达清晰的层级和归属关系,以父子层次结构来显示数据构成情况.旭日图中,离远点越近表示级别越高,相邻两层中 ...
- mybatis批量更新数据三种方法效率对比
探讨批量更新数据三种写法的效率问题. 实现方式有三种, 1> 用for循环通过循环传过来的参数集合,循环出N条sql,需要在db链接url后面带一个参数 &allowMultiQuer ...
- 前端js调用后端API获取数据的三种方法(2022.7.25)
前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...
- 查看Mat对象的数据的三种方法
我们有了Mat的对象之后,就可以开始对图像进行处理. 在图像的处理过程中,对数据的查看并且对其进行修改,这应当是比较频繁的操作了. 这里讲讲官方手册当中给出的三种方法. 第一种方法:使用指向Mat数据 ...
最新文章
- [跟我学UML] UML包图中的包和命名空间
- 多线程下载问题(IDHTTP)
- Android wechat 分享
- python中哪里用到缩进_Python编程常见十大错误
- 【Java 虚拟机原理】栈帧 | 动态链接 | 方法区 | 字节码文件二进制分析
- CTF(pwn) Fastbin Attack
- matlab图像相加例子,MATLAB图像处理例子
- Hasor【付诸实践 03】Dataway 无代码接口工具 DataQL 聚合查询引擎使用 Mybatis 实现分页查询举例说明 + 问题分析(针对GreenPlum数据库)
- ios 获取一个枚举的所有值_凯哥带你从零学大数据系列之Java篇---第十一章:枚举...
- vue-cli搭建的项目打包之后报“资源路径错误资源文件找不到“
- PowerBI功能发布时间线
- php按按字符串长度分割,支持中文的PHP按字符串长度分割成数组代码_PHP
- win7安装python3.6失败_win7下python3.6安装配置方法图文教程
- GPS模拟器算法(C#)
- python手机版做小游戏代码大全-用Python设计一个经典小游戏
- html设置模块居中,DW怎么设置DIV模块在页面中居中?
- python虚拟变量回归_虚拟变量提升多元线性回归模型精度(附Python代码与数据)...
- ZNS : 解决传统SSD问题的高性能存储栈设计(fs-->io-->device)
- 录音笔新燃点:AI+创新 实现应用场景再迭代
- 百旺红字发票信息表显示服务器返回为空,红字发票信息表状态详细说明