遍历DataTable内存数据的三种方法性能对比 dataTable.Select 用过不?
2012-03-12 16:56
369 查看
前几年曾经碰到一个生成递归树形菜单的功能,由于系统比较庞大,有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();
}
这个方法,还有一个好处,就是可以按指定的排序方法进行排序,用起来非常爽,不用自己再折腾了。
程序与程序的差别,都不是有天大的明显,每个环节都有一点点的差距,那整个系统的差距就非常明显了,就像人与人的差距不是很明显,
但是就那么一点点儿差距,使得我们在现实生活中有上下级关系,领导与别领导关系,有了贫富差距。
将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。
当然若是动态加载什么的,那就不会有太多麻烦了,加载这么多菜单时,不同的解决方法的确差别很大。
第一种写法,每次循环遍历表,这应该是最普通的做法,结果运行速度比较慢,效果有些难以忍受。
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();
}
这个方法,还有一个好处,就是可以按指定的排序方法进行排序,用起来非常爽,不用自己再折腾了。
程序与程序的差别,都不是有天大的明显,每个环节都有一点点的差距,那整个系统的差距就非常明显了,就像人与人的差距不是很明显,
但是就那么一点点儿差距,使得我们在现实生活中有上下级关系,领导与别领导关系,有了贫富差距。
将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。
相关文章推荐
- 遍历DataTable内存数据的三种方法性能对比 dataTable.Select优先选择
- 遍历DataTable内存数据的三种方法性能对比 dataTable.Select 用过不?
- 遍历DataTable内存数据的三种方法性能对比 dataTable.Select 用过不?
- 遍历DataTable内存数据的三种方法性能对比 dataTable.Select 用过不?
- 遍历DataTable内存数据的三种方法性能对比 dataTable.Select 用过不?
- 遍历DataTable内存数据的三种方法性能对比
- 遍历DataTable内存数据的三种方法性能对比
- 遍历DataTable内存数据的三种方法性能对比
- Dynamics CRM2016 查询数据的三种方式的性能对比
- ArrayList容器三种遍历元素方法的性能对比报告
- C# 将内存中的datatable数据导出为Excel(方法二,创建Excel对象导出)
- php实现斐波那契数列的三种方法,递归回调和迭代器和数组之间性能对比
- 网络数据获取三种方法对比:HUB、SPAN和TAP
- Dynamics CRM2016 查询数据的三种方式的性能对比
- 使用Excel“自动化”功能将数据输出到Excel的三种高效方法对比实验
- DataTable数据批量写入数据库三种方法比较 以及方法介绍
- 去除DataTable重复数据的三种方法
- C# 将内存中的datatable数据导出为Excel(方法一,以文件流方式导出)【转载】
- DataTable数据批量写入数据库三种方法比较
- C# 将内存中的datatable数据导出为Excel(方法二,创建Excel对象导出)【转载】