我有一个电子商务网络应用程序,允许用户在我的网站上购买软件组件。我正在检索用户从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是否适合这种操作的数据结构?我该怎么办?
答案 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#已经生锈了。但似乎是正确的