日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 遍历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#

轉載于:https://www.cnblogs.com/carl2380/archive/2011/10/31/2229938.html

總結

以上是生活随笔為你收集整理的遍历DataTable内存数据的三种方法性能对比的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。