0

我有以下代码:

foreach (XNode rowXml in elements.Nodes())
                         {        
                             foreach (DataRow rowDB in dataSetDB.Tables[0].Rows)
                             {
                                 string itemDB = rowDB[0].ToString().ToUpper();
                                 string itemXml = rowXml.ToString().ToUpper();
                                 if (itemDB == itemXml)
                                 {    
                                    //If itemDB == itemXml; jump to Outer_Foreach
                                 }
                                 if (itemDB != itemXml)
                                 {  
                                     //If itemDB != itemXml; jump to Outer_Foreach
                                 }
                             }

怎么可能从 Inner-Foreach 到 Outer-Foreach,并且仍然将 foreach 保留在你离开它的地方。我正在循环一个 DB 和 XML 表行。休息; 完全跳出 Inner-Foreach 并且我无法捕捉到我离开它的位置,所以当我一遍又一遍地循环遍历它时,我从 index[0] 开始。

4

2 回答 2

1

听起来你需要'for'循环。

 int i = 0;
 int k = 0;
 bool shouldBreak;

 var nodes = elements.Nodes();
 var rows = dataSetDB.Tables[0].Rows;

 for (i = 0; i < nodes.Count(); i++)
 {
     for(k = 0; k < rows.Count(); k++)
     {
        string itemDB = rows[k][0].ToString().ToUpper();
        string itemXml = nodes[i].ToString().ToUpper();
            if (itemDB == itemXml)
            {   
                shouldBreak = true;
                break;
            }
            if (itemDB != itemXml)
            {  
                shouldBreak = true;
                break;
            }
     }
     if (toBreak)
         break;
 }

现在,如果您要中断内部循环,可以通过访问 i 和 k 知道它在哪里中断

于 2013-09-04T08:23:50.457 回答
0

这个答案是从这个答案中偷来的。你想要实现的是一个 zip 操作。有关更多信息,请参阅我链接的答案。

var xmlNodes = elements.Nodes();
var dbNodes = dataSetDB.Tables[0].Rows;

var xmlAndDB = xmlNodes.Zip(dbNodes , (x, d) => new { xNode = x, dNode = d });

foreach(var xd in xmlAndDB )
{
    Console.WriteLine(xd.xNode + xd.dNode);

    string itemDB = xd.dNode[0].ToString().ToUpper();
    string itemXml = xd.xNode.ToString().ToUpper();

    if (itemDB == itemXml)
    {    
        //If itemDB == itemXml;
    }
    else /* if (itemDB != itemXml) */ 
    {  
        //If itemDB != itemXml;
    }
}
于 2013-09-04T09:14:49.393 回答