2016-11-16 117 views
2
XDocument doc = XDocument.Load(@"XMLFile1.xml"); 
Kullanıcılar _kullanici = new Kullanıcılar(); 
string password = pnb2.Password; 
foreach (XElement element2 in doc.Descendants("sif")) 
{ 
    foreach (XElement element1 in doc.Descendants("iban")) 
    { 
     foreach (XElement element3 in doc.Descendants("accountno")) 
     { 
      foreach (XElement element4 in doc.Descendants("money")) 
      {    
       foreach (XElement element8 in doc.Descendants("acc")) 
       { 
        string val1 = element2.Value; 
        string val2 = element1.Value; 
        string val3 = element3.Value; 
        string val4 = element4.Value; 
        string val8 = element8.Value; 
        if (val8 == "1" && val1 == "Abdullah") 
        {            
         lbl1.Content = ("İban Numaranız :" + val2); 
         lbl2.Content = ("Hesap Numaranız :" + val3); 
         lbl3.Content = ("Bakiyeniz :" + val4); 
        } 
       } 
      } 
     } 
    } 
} 

如何停止此循环?如果val8="1"val1=="Abdullah"我想 在屏幕上显示我的数据,但此循环正在进入一个无限循环 因此没有显示在屏幕上。如何停止c上的foreach循环#

+1

如果(的Val8 = “1” 和VAL1 == “阿卜杜拉”) {回报;} –

+1

@viveknuna'break'会更好,这里 – wudzik

+2

@wudzik:几乎可以肯定不是 - 如果OP想退出整个5层嵌套循环集合,然后把它放在一个单独的方法中,并返回可能是最好的方法。 –

回答

2

修正误差以这样的方式

if (val8 == "1" && val1 == "Abdullah") 
{ 
    lbl1.Content = ("Iban Numaraniz :" + val2); 
    lbl2.Content = ("Hesap Numaraniz :" + val3); 
    lbl3.Content = ("Bakiyeniz :" + val4); 
    return; 
} 
+1

只需在第一个循环中更改val1 chekc,这会给你提升性能:'if(element2.Value!=“Abdullah”) continue;' – mybirthname

+0

谢谢评论:) –

1

你可以让使用goto声明:

if (val8 == "1" && val1 == "Abdullah") 
{ 
    lbl1.Content = ("İban Numaranız :" + val2); 
    lbl2.Content = ("Hesap Numaranız :" + val3); 
    lbl3.Content = ("Bakiyeniz :" + val4); 
    goto Finished; 
} 

标签Finished应放置的最外层foreachXElement element2 in doc.Descendants("sif"))右括号之后。像下面这样的工作:

Finished: 
    ; 

你可以在​​检查这个。

+0

这将只会从最内层的循环,这可能不是什么意图打破。 –

+0

@JonSkeet oops正确!谢谢:) – Christos

+0

@Downvoter,如果你能解释什么是错的,我将不胜感激。提前致谢。 – Christos

1

,或者你可以尝试使用“破发”停止循环。

if (val8 == "1" && val1 == "Abdullah") 
{            
    lbl1.Content = ("İban Numaranız :" + val2); 
    lbl2.Content = ("Hesap Numaranız :" + val3); 
    lbl3.Content = ("Bakiyeniz :" + val4); 
    break; //stops the loop 
}