请问如下foreach循环的逻辑是什么?

royvb 2010-12-15 04:07:07
数据库表单如下
id,context,parentid
1 dd 0
2 cc 1
3 ee 1
4 ff 2

现有一循环取出数据填充treeview 控件,请问这个foreach逻辑是什么?详细的说是当循环到第二条数据(2,cc,1)时,就会
调用loadTreeView(int.Parse(drv["id"].ToString()), node, pTree),而此时dv中是没有数据的,那么接下来就不会进foreach循环,它是如何再取第三条记录和第四条记录的?逻辑如何?谢谢解答!
private void loadTreeView(int parentid, TreeNode pNode, TreeView pTree)
{
TreeNode node = new TreeNode();
DataView dv = new DataView(dt);
dv.RowFilter = "parentid=" + parentid.ToString();

foreach (DataRowView drv in dv)
{
if (pNode == null)
{
node = pTree.Nodes.Add(drv["context"].ToString());
loadTreeView(int.Parse(drv["id"].ToString()), node, pTree);
}
else
{
node = pNode.Nodes.Add(drv["context"].ToString());
loadTreeView(int.Parse(drv["id"].ToString()), node, pTree);
}
}
...全文
216 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mydear303 2010-12-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hustliangchen 的回复:]
我感觉你不是不懂foreach,而是不懂递归
[/Quote]
+1
指间的风 2010-12-16
  • 打赏
  • 举报
回复
foreach 是遍历,遍历所有元素。
旅行者I号 2010-12-16
  • 打赏
  • 举报
回复
我感觉你不是不懂foreach,而是不懂递归
aspxlover1 2010-12-16
  • 打赏
  • 举报
回复
应该是递归调用
先loadTreeView 0,然后 loadTreeView 对应的id
没有子节点的时候就返回
wuyq11 2010-12-15
  • 打赏
  • 举报
回复
royvb 2010-12-15
  • 打赏
  • 举报
回复
还是不太清楚,是如何实现的,我昨天看了一下MSDN还是不太清楚,所以才问的,另外用LINQ如何实现?
flyerwing 2010-12-15
  • 打赏
  • 举报
回复
LINQ不方便吗
vrhero 2010-12-15
  • 打赏
  • 举报
回复
foreach通过调用GetEnumerator、MoveNext、Reset方法和Current属性枚举集合成员...而这些方法和属性在你这段代码里由DataView的IEnumerable接口提供实现...

去看MSDN吧...这个问题跟你这些代码关系不大...

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧