【发布时间】:2018-08-15 09:03:54
【问题描述】:
我需要从多级树视图中的当前选定项目中搜索列表中的内容。我的树视图中有 4 个级别,并在第 4 级搜索符合某些条件的节点。请看下图:
现在在这张图片中,我正在搜索里面有 1 个的红色块(失败的一个)。以下是我要搜索的代码:
foreach (var Project in Projects)
{
foreach (var Devices in Project.TestRuns)
{
foreach (var Category in Devices.TestModuleCategories)
{
foreach (var TestModule in Category.TestModules)
{
foreach (var statement in TestModule.TestModuleStatementList)
{
if (statement.TestsFailed == 1 && !statement.IsSearched)
{
TestModule.TestModuleStatementList.ForEach(f => { f.IsCurrentFocused = false; });
statement.IsCurrentFocused = true;
statement.IsSearched = true;
TreeViewItem item = GetTreeViewItem(ViewTestDataTree, statement);
item.IsExpanded = true;
//ViewTestData.SetSelectedItem(ref ViewTestDataTree, item);
//item.Focus();
return;
}
statement.IsCurrentFocused = false;
}
}
}
}
}
Projects.ForEach(a => a.TestRuns.ForEach(b => b.TestModuleCategories.ForEach(c => c.TestModules.ForEach(d => d.TestModuleStatementList.ForEach(f => { f.IsSearched = false; })))));
现在的问题是我每次搜索时都在运行 foreach 循环,但我希望如果用户在任何地方的列表中间,那么搜索应该从那里开始到列表的最后一个,并且从顶部开始剩余的列表。是否有任何机制可以从集合的任何位置开始并从下到上搜索所有节点?
【问题讨论】:
-
你为什么不尝试正常的 for(int i=startFirst; i
-
如果您已经在
Projects上执行foreach,那么您为什么还要在所有事情上调用ForEach?这是重写还是什么? -
我正在使用 foreach,因为 Projects 有一个 TestRuns 集合,而 TestRuns 有一个集合,直到 TestModuleStatementList,我想在 TestModuleStatementList 上进行搜索。现在我想从用户当前关注树视图的位置开始搜索,所以无论如何要启动 foreach 循环以从特定集合开始,然后遍历完整列表?
-
我认为这是我见过的嵌套最多的
foreach循环 -
@PankajBhatia 又来了!这就是为什么有标准的循环。 for(int i=startIndex; istackoverflow.com/questions/1211608/…