带有动态索引的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;
    }
}

带有动态索引的Foreach循环

只使用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;
    }
}