2011-03-29 112 views
0

我有一個電子商務網絡應用程序,它允許用戶在我的網站上購買軟件組件。我正在檢索用戶從SQL Server的UserTransactionHistory表中購買的發票號和軟件組件標題。我將它們存儲在ArrayList中具有的SoftwareTitles類asp.net/c#中的數據結構問題#

public class SoftwareTitles 
{ 
    string softwareTitle; 
    string invoiceNumber; 

    public SoftwareTitles(string softwareTitle, string invoiceNumber) 
    { 
     this.softwareTitle = softwareTitle; 
     this.invoiceNumber = invoiceNumber; 
    } 

    string InvoiceNumber 
    {   
     get 
     { 
      return this.invoiceNumber; 
     } 
    } 

    string SoftwareTitle 
    { 
     get 
     { 
      return this.softwareTitle; 
     } 
    } 
} 

}

的幫助和我加入這個類以這種方式數組列表。

ConnectionToSql con1 = new ConnectionToSql(); 
     string connectionString = con1.ConnectionStringMethod(); 
     SqlConnection sqlConnection = new SqlConnection(connectionString); 
     SqlCommand cmd2 = new SqlCommand("SelectionOfSoftwareTitles", sqlConnection); 
     cmd2.CommandType = CommandType.StoredProcedure; 
     sqlConnection.Open(); 
     SqlDataReader dr2 = cmd2.ExecuteReader(); 

     if (dr2.HasRows) 
     { 
      while (dr2.Read()) 
      { 
       String softwareTitle = (String)dr2[0]; 
       String invoiceNumber = (String)dr2[1]; 
       softwareTitlesArray.Add(new SoftwareTitles(softwareTitle, invoiceNumber)); 
       int i = 0; 

      } 

     } 

     sqlConnection.Close(); 
     dr2.Close(); 

但是,當我想檢索與某個發票號碼相關聯的所有軟件標題時。我無法做到。

我是否正確地做? ArrayList是否適合這種操作的數據結構?我應該怎麼做?

+0

@klabranche正如你可以看到它是一個多維數組列表。我想根據invoicenumber從該數組列表中檢索值。 (int j = 0; j 2011-03-29 14:09:39

回答

1

我個人會使用非通用列表對象。

要聲明:

List<Software> softwareTitles= New List<Software>(); 

和目標軟件:

if (dr.HasRows) 
     { 
      while (dr.Read()) 
      { 
       string title = dr["TITLE_COLUMN"]; 
       int invoice = dr["INVOICE_COLUMN"]; 
       Software s = new Software(); 
       s.Title = title; 
       s.Invoice = invoice; 
       softwareTitles.add(s); 

      } 

     } 

,然後你可以在列表中使用一個簡單的循環,像計數器,softwareTitles(I)遍歷或者你甚至可以使用LINQ來完成任何你想做的事情。 例如

for (i=0; i<softwareTitles.Count;i++) 
{ 
    if (softwareTitles[i].Invoice==213) 
    { 
    Console.WriteLine(softwareTitles[i].Title); 
    } 
} 

這樣的東西。對不起,我最近使用VB.NET,所以我的C#已經生鏽了。但它似乎是正確的

+0

但我如何從列表中檢索值取決於invoicenumber。 – 2011-03-29 14:06:02

+0

@ user653622:已更新! – waqasahmed 2011-03-29 14:09:28

+0

我不能像你提到的那樣引用列表項。我的意思是softwareTitles(i).Invoice = 213它只是嚇壞了! – 2011-03-29 14:37:18

1

使用通用列表集合來添加Objects和Linq來查詢記錄。

+0

我在我的項目中沒有使用linq – 2011-03-29 13:58:08

+1

然後使用存儲過程在自我檢索時過濾記錄。 – varadarajan 2011-03-29 14:02:57