2012-07-13 165 views
1

否則語句在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

回答

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

然而,正如漢斯指出,你的循環是不必要的,因爲好,因爲所有的用戶名是相同的。你的代碼可能是那樣簡單:

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

0

不知道你嘗試什麼來實現的,但它看起來像你正在試圖找出如果用戶是在數據庫中,如果是這樣,配置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."; 
     } 
    } 
}