我之前有像这样的数据库
ItemName Price
对项目名称我有哈希表的价格。我的一些代码就像这样
Hashtable pricesTilesBox = new Hashtable();
string itemNameData=myReader["ItemName"].ToString().Trim();
int price=Convert.ToInt32(myReader["Price"]);
pricesTilesBox.Add(itemNameData,price);
foreach (string key in pricesTilesBox.Keys)
{
Console.WriteLine(key + '=' + pricesTilesBox[key]);
}
但现在我已经更改了数据库表
ItemName PriceLight PriceDark
现在可以使用哪种数据结构,我可以PriceLight PriceDark
对itemName
。因为现在有两种价格。在这种情况下是否也可以使用哈希表?
答案 0 :(得分:1)
如何使用List<TileBox>
?
public class TileBox
{
public string Name {get; set;}
public decimal PriceLight {get; set;}
public decimal PriceDark {get; set;}
}
List<TileBox> tileBoxes = new List<TileBox>();
//loop here to add TileBoxes to the List
{
TileBox tileBox = new TileBox();
tileBox.Name = myReader["ItemName"].ToString().Trim();
tileBox.PriceLight = Convert.ToDecimal(myReader["PriceLight"]);
tileBox.PriceDark = Convert.ToDecimal(myReader["PriceDark"]);
tileBoxes.Add(tileBox);
}
这种方式还支持稍后向TileBox添加字段。您只需要更改类TileBox来保存新字段,并且可能需要读取器循环来将字段读入类中,其余代码可以保持不变。
答案 1 :(得分:1)
为什么不创建一个类Price
:
public class Price
{
public decimal PriceLight { get; set; }
public decimal PriceDark { get; set; }
}
然后使用Dictionary<string,Price>
。
答案 2 :(得分:1)
如果您仍希望能够使用散列表行为轻松根据其名称查找条目:
public class Entry {
public string ItemName { get; set; }
public int PriceLight { get; set; }
public int PriceDark { get; set; }
}
Dictionary<string, Entry> pricesTilesBox = new Dictionary<string, Entry>();
string itemNameData=myReader["ItemName"].ToString().Trim();
int light=Convert.ToInt32(myReader["PriceLight"]);
int dark=Convert.ToInt32(myReader["PriceDark"]);
pricesTilesBox.Add(itemNameData,new Entry { ItemName = itemNameData, PriceLight = light, PriceDark = dark });
foreach (string key in pricesTilesBox.Keys)
{
Console.WriteLine(key + '=' + pricesTilesBox[key]);
}
答案 3 :(得分:0)
你可以简单地创建一个class
来保存两个项目
MyClass
{
PriceLight;
PriceDark;
}
使用相同的Hashtable
,而不是插入Price
object
MyClass
ItemName
。
答案 4 :(得分:0)
如果您的属性将来可能会再次发生变化,您可以考虑使用Tuple类