zoukankan      html  css  js  c++  java
  • 遍历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();
    }

    分类: C#
  • 相关阅读:
    [洛谷P2184]贪婪大陆
    [BJOI2006]狼抓兔子
    [JSOI2007]重要的城市(x)
    [NOIP2011提高组]Mayan游戏
    gitee 使用
    部分激光打印机清零方法
    django2.0内置分页
    django上下文处理器
    jquery键盘事件
    类视图装饰器
  • 原文地址:https://www.cnblogs.com/carl2380/p/2229938.html
Copyright © 2011-2022 走看看