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 テーブルの行をループしています。壊す; completley が 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 に答える