遍历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内存数据的三种方法性能对比的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杂项记录
- 下一篇: live555学习笔记7-RTP打包与发