if..else语句不能在foreach循环中工作

if..else语句不能在foreach循环中工作

问题描述:

否则语句在foreach循环中无法正常工作?这是我的代码。如果我的代码解释有问题会很好。if..else语句不能在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."; 
      } 
     } 
    } 
} 
+0

究竟是什么问题? – SingerOfTheFall 2012-07-13 08:04:18

+0

你知道你总是覆盖“displayMSG.Text”吗?最后一个会赢! – 2012-07-13 08:05:12

+0

其他不工作:(我不知道为什么 – FishBowlGuy 2012-07-13 08:05:54

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 = "?"; 
     } 
    } 

然而,正如汉斯指出,你的循环是不必要的,因为好,因为所有的用户名是相同的。你的代码可能是那样简单:

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."; 
     } 
    } 
+0

嗯,我试过我们的代码,但得到了错误,而不是 – FishBowlGuy 2012-07-13 08:10:25

+0

啊 - 我想我现在明白你的问题。你想获得属于用户名的帐户。如果没有帐户存在,您希望显示适当的消息。请参阅我刚添加的第二段代码。 – 2012-07-13 08:11:37

+0

谢谢它的作品:D – FishBowlGuy 2012-07-13 08:14:01

不知道你尝试什么来实现的,但它看起来像你正在试图找出如果用户是在数据库中,如果是这样,配置displayMSG对象。 你不能做这样的事情

var user=db2.Single(u=> u.username==getdata2.Text); 

如果没有用户发现,辛格会抛出异常。如果你不这样做,你可以使用SingleOrDefault()方法

protected void getdata_Click(object sender, EventArgs e) 
{ 
    using (var db2 = new cftzClassDataContext()) 
    { 
     try 
     { 
      var user=db2.Single(u=> u.username==getdata2.Text); 
      displayMSG.Text = "Is this correct "; 
      displayData.Text = user.username; 
      displayQuestionMark.Text = "?"; 
     } 
     catch 
     { 
      displayMSG.Text = "No User Found."; 
     } 
    } 
}