if..else语句在foreach循环中不起作用

Fis*_*Guy 1 asp.net

其他声明在foreach循环中无法正常工作?这是我的代码.如果我的代码解释出错了会很好.

protected void getdata_Click(object sender, EventArgs e)
{
    using (var db2 = new cftzClassDataContext())
    {
        var username = (from p in db2.cftzAccounts
                        where p.username.Equals(getdata2.Text)
                        select p);
        foreach (var p in username)
        {
            if (getdata2.Text == p.username)
            {
                displayMSG.Text = "Is this correct ";
                displayData.Text = p.username;
                displayQuestionMark.Text = "?";
            }
            else
            {
                displayMSG.Text = "No User Found.";
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

RB.*_*RB. 9

if声明完全是多余的,因为您已经将列表过滤为仅包含用户名等于的帐户getData2.Text.因此,您的if测试将始终评估为true.

您可以将其重写为此,效果相同

    using (var db2 = new cftzClassDataContext())
    {
        var username = (from p in db2.cftzAccounts.Take(100)
                        where p.username.Equals(getdata2.Text)
                        select p);

        foreach (var p in username)
        {
            displayMSG.Text = "Is this correct ";
            displayData.Text = p.username;
            displayQuestionMark.Text = "?";
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,正如Hans指出的那样,你的循环也是不必要的,因为所有的用户名都是一样的.您的代码可以像下面这样简单:

    using (var db2 = new cftzClassDataContext())
    {
        var user = db2.cftzAccounts.
              FirstOrDefault(account => account.username.Equals(getdata2.Text));

        if (user != null)
        {
            displayMSG.Text = "Is this correct ";
            displayData.Text = user.username;
            displayQuestionMark.Text = "?";
        }
        else 
        {
            displayMSG.Text = "No User Found.";
        }
    }
Run Code Online (Sandbox Code Playgroud)