Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何停止c上的foreach循环#_C#_Xml - Fatal编程技术网

C# 如何停止c上的foreach循环#

C# 如何停止c上的foreach循环#,c#,xml,C#,Xml,我怎样才能阻止这个循环?如果val8=“1”和val1==“阿卜杜拉”我想 在屏幕上显示我的数据,但这个循环正在进入一个无休止的循环 因此屏幕上不会显示任何内容。您可以使用goto语句: XDocument doc = XDocument.Load(@"XMLFile1.xml"); Kullanıcılar _kullanici = new Kullanıcılar(); string password = pnb2.Password; foreach (XElement element2

我怎样才能阻止这个循环?如果
val8=“1”
val1==“阿卜杜拉”
我想 在屏幕上显示我的数据,但这个循环正在进入一个无休止的循环
因此屏幕上不会显示任何内容。

您可以使用
goto
语句:

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);
                    }
                }  
            }
        }
    }
}
标签
Finished
应放在最外层的
foreach
文档子体(“sif”)中的元素2
)的闭合括号之后。类似于以下内容的内容可以完成您的工作:

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

您可以在以下位置进行检查。

通过以下方式修复错误:

Finished: 
    ;
或者您可以尝试使用“break”来停止循环

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

如果(val8=“1”和val1==“Abdullah”){return;}@wudzik:几乎肯定不会-如果OP想在那一点上退出整个5层嵌套的循环集,那么将其放在单独的方法中并返回可能是最好的方法。然而,我们这里的代码不会进入无止境的循环。。。我猜还有其他问题。侧记:你可能想考虑使用XPath查询,而不是像这样循环。或者LINQ查询。请注意,您不太可能真的希望在所有情况下都使用
doc.substands
——例如,我希望使用
foreach(element2.substands(“iban”)中的XElement元素1)
。否则,您将有5个完全独立的序列进行迭代。这只会从最内部的循环中中断,这可能不是您的意图。@Downvoter,如果您能解释错误,我将不胜感激。提前谢谢。@Christos这是最好的答案:)只要在第一个循环中更改val1 chekc,这将提高性能:
如果(element2.Value!=“Abdullah”)继续
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
}