asp.net/c#中的数据结构问题

时间:2011-03-29 13:52:28

标签: asp.net arraylist

我有一个电子商务网络应用程序,允许用户在我的网站上购买软件组件。我正在检索用户从sql server中的UserTransactionHistory表中购买的发票号和软件组件标题。我在SoftwareTitles类的帮助下将它们存储在arraylist中

 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;
        }
    }
}

}

我正以这种方式将这个类添加到arraylist中。

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是否适合这种操作的数据结构?我该怎么办?

2 个答案:

答案 0 :(得分:1)

使用通用列表集合添加对象和Linq以查询记录。

答案 1 :(得分: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完成你想做的任何事情。 e.g。

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

这样的事情。对不起,我最近使用的是VB.NET,所以我的C#已经生锈了。但似乎是正确的