2011-03-23 58 views
0

下面是我試圖用來搜索arraylist的一段代碼。我用不同的形式使用了與此非常相似的代碼,並且它已經工作。但是這裏沒有。它旨在搜索frmMain中的Arraylist中的客戶號碼,然後搜索用戶輸入的客戶帳號。但由於某種原因,它幾乎就像跳過第二條if語句並轉到底部的錯誤消息。正在搜索Arraylist不工作​​

ArrayList的是在frmMain,然後有客戶賬戶及交易類。在Customer中有另一個ArrayList存儲賬戶,然後在Account Class中有一個ArrayList存儲客戶賬戶的交易。

 foreach (Customer a in frmMain.bankDetails) 
     { 
      if (a.getCustomerNumber().ToUpper().Equals(custSearch)) 
      { 
       foreach (Account b in a.Accounts) 
       { 
        if (b.getAccNumber().Equals(searchString)) 
        { 
         txtSearch.BackColor = Color.PaleGreen; 
         txtAccSortCode.Text = b.getAccSort(); 
         txtAccNumber.Text = Convert.ToString(b.getAccNumber()); 
         txtAccNickName.Text = b.getAccNick(); 
         txtAccDate.Text = b.getAccDate(); 
         txtAccCurBal.Text = Convert.ToString(b.getAccCurBal()); 
         txtAccOverDraft.Text = Convert.ToString(b.getAccOverDraft()); 
         txtNumTrans.Text = Convert.ToString(b.getAccNumTrans()); 
         found = true; 
         break; 
        } 
       } 
      } 
     } 

任何幫助表示讚賞!

+3

您是否附加了調試器並逐步完成代碼?你可能會更快地找到答案! – 2011-03-23 16:56:08

+2

是'b.getAccNumber()'返回一個int而'searchString'是一個字符串? – SwDevMan81 2011-03-23 16:57:16

+1

考慮切換到'列表'。 – 2011-03-23 16:58:51

回答

1

如果b.getAccNumber()是返回一個intsearchString是一個字符串,那麼它將始終返回false。例如:

int int_four = 4; 
string string_four = "4"; 
bool eq1 = int_four.Equals(string_four); // false 
bool eq2 = int_four.ToString().Equals(string_four); // true 
0

是「getCustomerNumber」屬性的實際數目(整數)或不?我認爲它不是,因爲否則不會使用ToUpper()方法。也有信(我認爲)。

無論如何,你會介意讓我看看你的客戶類嗎?並粘貼一些客戶編號示例。 米蒂亞