Пропустить `n` итерации в цикле foreach - PullRequest
0 голосов
/ 24 декабря 2018

Как пропустить n количество итераций в каждом цикле.

Ниже приведен пример.В условии if будет задействовано более 1 узла.Эти узлы должны быть исключены из цикла foreach.Например, в операторе if задействованы 3 узла, мне нужен цикл foreach для перехода к 4-му узлу следующей следующей итерации.

foreach (XmlNode node in docs.SelectNodes(query))
{
   if (condition = true)
    {

       do
        {

           XmlNode nextnode = parentnode.NextSibling;
           string nextnodetest = nextnode.LocalName;
           if (nextnodetest = "Programme")
           {
            //calculate duration.
            }
       while (nextnodetest !=programme)

      }
    // skip the nodes in the foreach loop that were involved in the if/do statements above
}

Как пропустить эти узлы из итерации цикла foreach.

Ответы [ 3 ]

0 голосов
/ 24 декабря 2018

может быть что-то вроде этого

        XmlNodeList nodeList = docs.SelectNodes(query)
        XmlNode node;
        for (int i = 0; i < nodeList.Count; i++)
        {
            node = nodeList[i];
            if (condition == true)
            {

                int itemsToSkip = 0;
                string nextnodetest;
                do
                {
                   ...

                    if (nextnodetest == "Programme")
                    {
                        itemsToSkip++;
                        //calculate duration.
                    }
                } while (nextnodetest != "Programme");

                i = i + itemsToSkip;
            }

            ... your code 
        }
0 голосов
/ 25 декабря 2018

Просто используйте цикл for:

var nodes = docs.SelectNodes(query).ToList();
for(int i = 0; i < nodes.Count; i += n)
{
   XmlNode node = nodes[i];
}
0 голосов
/ 24 декабря 2018

Попробуйте этот код:

var nodes = docs.SelectNodes(query).OfType<XmlNode>().ToArray();
for (int i=0; i< nodes.Length; i++)
{
    if(condition....)
    {
      ....
      i+= n;
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...