带有动态索引的Foreach循环
本文关键字:Foreach 循环 索引 动态 | 更新日期: 2023-09-27 18:01:18
在我的if语句中,我增加了counter的值。我使用var计数器作为子类别的索引。在if语句之后,它跳出循环。我希望它开始循环子类别[1]或[2]等。我怎么能继续循环索引1,2,3为我的子类列表?
int counter = 0;
int eachCounter = 0;
foreach (var item in filteredList[0].subcategories[counter].questionanswer)
{
int questionsCounter = filteredList[0].subcategories[counter].questionanswer.Count;
eachCounter++;
if (eachCounter.Equals(questionsCounter))
{
counter++;
eachCounter = 0;
}
}
只使用for
,因为这不会工作。foreach
将在第一次迭代中迭代初始的questionanswer
,它不会在下一次迭代中更进一步。
for (int counter = 0; counter < filteredList[0].subcategories.Count; counter++)
{
var item = filteredList[0].subcategories[counter].questionanswer;
}
如果您想遍历两个列表(内部列表和外部列表),请使用两个foreach
语句或for
循环。
使用for each循环遍历filteredList[0].subcategories
数组:
int counter = 0;
int eachCounter = 0;
foreach (var item in filteredList[0].subcategories)
{
// item is filteredList[0].subcategories[0], filteredList[0].subcategories[1] and so on.
int questionsCounter = item.questionanswer.Count;
eachCounter++;
if (eachCounter.Equals(questionsCounter))
{
counter++;
eachCounter = 0;
}
}
我不知道你的程序背后的逻辑,我看到你使用counter
作为循环变量并在两者之间改变它,所以它可能不会连续迭代filteredList[0].subcategories[]
的所有元素。但是,如果您想使用foreach
连续遍历filteredList[0].subcategories[]
的所有元素,则可以这样做。
遍历子类别[0],[1]等:
foreach (var item in filteredList[0].subcategories)
{
// item is filteredList[0].subcategories[0], filteredList[0].subcategories[1] and so on.
foreach(element in item)
{
//element is item[0], item[1] and so on i.e
// filteredList[0].subcategories[0].questionAnswer[0]
// filteredList[0].subcategories[0].questionAnswer[1]
// filteredList[0].subcategories[0].questionAnswer[2]
// .
// .
// filteredList[0].subcategories[1].questionAnswer[0]
// filteredList[0].subcategories[1].questionAnswer[1]
// .
// .
}
}
使用for循环
int eachCounter = 0;
for(int i = 0; i < filteredList[0].subcategories[i].questionanswer.Count; i++)
{
int questionsCounter = filteredList[0].subcategories[i].questionanswer.Count;
eachCounter++; // I am not sure why you are doing this or what the purpose is
if (eachCounter.Equals(questionsCounter))
{
eachCounter = 0;
}
}