在循环中查找特定信息

1 c# winforms

string number = txtNumber.Text;

        foreach (Account ac in tabAccounts)
        {
            if (txtNumber.Text == ac.Number)
            {

                this.Height = 328;
                lblWelcome.Text = "Welcome: " + ac.Client;
                break;
            }
            else
            {
                MessageBox.Show("Account Number not found");
            }

        }
Run Code Online (Sandbox Code Playgroud)

大家好,我在这里和C#相当新.所以我有一个带有客户信息的类账户存储在一个文本文件中.我想遍历数组tabAccounts [200]并查看输入的用户号是否与文本文件中的用户号相对应.它工作正常,但当我输入时说222它开始从乞讨循环直到它找到数字,如果它没有它只是保持循环和消息"帐号未找到"不断出来.当我删除else语句它工作正常,但我希望它当用户输入错误的数字时,一个消息框将显示...希望你们得到它:(尝试使用谷歌搜索,但没有找到任何东西..

And*_*bel 7

使用LINQ可以更有效地完成这项工作:

var account = tabAccounts.SingleOrDefault(a => a.Number == txtNumber.Text);

if(account != null)
{
  this.Height = 328;
  lblWelcome.Text = "Welcome: " + account.Client;
}
else
{
  MessageBox.Show("Account Number not found");
}
Run Code Online (Sandbox Code Playgroud)

对于您的原始代码:问题是您每次循环没有找到任何内容时都会在循环显示消息.这是一个接近原始语法的重写,只是为了告诉你如何做到这一点:

Account foundAccount = null;

foreach (Account ac in tabAccounts)
{
  if (txtNumber.Text == ac.Number)
  {
    foundAccount = ac;
    break;
  }
}

if(foundAccount != null)
{
  this.Height = 328;
  lblWelcome.Text = "Welcome: " + foundAccount.Client;
}
else
{
  MessageBox.Show("Account Number not found");
}
Run Code Online (Sandbox Code Playgroud)