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();
}

分类: C#

转载于:https://www.cnblogs.com/carl2380/archive/2011/10/31/2229938.html

遍历DataTable内存数据的三种方法性能对比相关推荐

  1. mysql如何防止插入重复数据_防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...

  2. python csv库,Python 中导入csv数据的三种方法

    Python 中导入csv数据的三种方法,具体内容如下所示: 1.通过标准的Python库导入CSV文件: Python提供了一个标准的类库CSV文件.这个类库中的reader()函数用来导入CSV文 ...

  3. 如何安全的在不同工程间安全地迁移asset数据?三种方法

    如何安全的在不同工程间安全地迁移asset数据?三种方法 答: 1.将Assets和Library一起迁移 2.导出包package 3.用unity自带的assets Server功能 posted ...

  4. mysql 禁止插入重复数据_防止MySQL重复插入数据的三种方法

    新建表格 CREATE TABLE `person` ( `id` int NOT NULL COMMENT '主键', `name` varchar(64) CHARACTER SET utf8 C ...

  5. Android 免root 备份数据,教你安卓手机免Root恢复手机数据的三种方法

    说到安卓手机,人们对它的第一印象就是开源.自由.可定制.市面上大多数系统,比如Flyme.MIUI其实都是由安卓内核再加上一层自己的包装罢了.所以你会看到手机上一堆预装软件卸载不掉,这本质上就是手机厂 ...

  6. 用旭日图展示数据的三种方法

    什么是旭日图? 旭日图(Sunburst Chart)是一种现代饼图,它超越传统的饼图和环图,能表达清晰的层级和归属关系,以父子层次结构来显示数据构成情况.旭日图中,离远点越近表示级别越高,相邻两层中 ...

  7. mybatis批量更新数据三种方法效率对比

    探讨批量更新数据三种写法的效率问题. 实现方式有三种, 1> 用for循环通过循环传过来的参数集合,循环出N条sql,需要在db链接url后面带一个参数  &allowMultiQuer ...

  8. 前端js调用后端API获取数据的三种方法(2022.7.25)

    前端js调用后台API获取数据的三种方法(2022.7.25) 前言 需求分析 一个Get实例 浏览器请求 SoapUI软件请求 一个Post实例 浏览器请求 SoapUI软件请求 1.Http简介( ...

  9. 查看Mat对象的数据的三种方法

    我们有了Mat的对象之后,就可以开始对图像进行处理. 在图像的处理过程中,对数据的查看并且对其进行修改,这应当是比较频繁的操作了. 这里讲讲官方手册当中给出的三种方法. 第一种方法:使用指向Mat数据 ...

最新文章

  1. [跟我学UML] UML包图中的包和命名空间
  2. 多线程下载问题(IDHTTP)
  3. Android wechat 分享
  4. python中哪里用到缩进_Python编程常见十大错误
  5. 【Java 虚拟机原理】栈帧 | 动态链接 | 方法区 | 字节码文件二进制分析
  6. CTF(pwn) Fastbin Attack
  7. matlab图像相加例子,MATLAB图像处理例子
  8. Hasor【付诸实践 03】Dataway 无代码接口工具 DataQL 聚合查询引擎使用 Mybatis 实现分页查询举例说明 + 问题分析(针对GreenPlum数据库)
  9. ios 获取一个枚举的所有值_凯哥带你从零学大数据系列之Java篇---第十一章:枚举...
  10. vue-cli搭建的项目打包之后报“资源路径错误资源文件找不到“
  11. PowerBI功能发布时间线
  12. php按按字符串长度分割,支持中文的PHP按字符串长度分割成数组代码_PHP
  13. win7安装python3.6失败_win7下python3.6安装配置方法图文教程
  14. GPS模拟器算法(C#)
  15. python手机版做小游戏代码大全-用Python设计一个经典小游戏
  16. html设置模块居中,DW怎么设置DIV模块在页面中居中?
  17. python虚拟变量回归_虚拟变量提升多元线性回归模型精度(附Python代码与数据)...
  18. ZNS : 解决传统SSD问题的高性能存储栈设计(fs-->io-->device)
  19. 录音笔新燃点:AI+创新 实现应用场景再迭代
  20. 百旺红字发票信息表显示服务器返回为空,红字发票信息表状态详细说明

热门文章

  1. 计算机安全基础:认证技术知识笔记
  2. 几个高逼格 Linux 命令!
  3. SFTP是什么?与FTP之间有什么区别
  4. 程序员最喜欢说的十句话,看看你最喜欢说哪句?
  5. .net 2005大写html标签 xhtml10,HTML10.ppt
  6. java 创建者设计模式_Java设计模式之创建者模式分享热爱编程,程序人生
  7. [Dart] Flutter开发中的几个常用函数
  8. Java枚举根据key获取value
  9. mysql导入sqlserver数据库表
  10. es6(五):函数的扩展