我正在从数据库中检索列表中的数据,并希望将其两个列存储在哈希表中。但是我能够在散列表中只插入一行,其中索引是0.有没有办法插入到散列表而不考虑索引?我现在正在使用以下方法。有什么建议吗?
foreach (StoreInfo store_info_id in StoreList)
{
Hashtable hashTable = new Hash table();
hashTable.Add(StoreList[0].store_info_id, StoreList[0].RetailControlNumber);
}
答案 0 :(得分:2)
三点:
Hashtable
只是Dictionary<object, object>
。所以,今天已经没有任何理由使用Hashtable
了,除非您在Hashtable
是唯一选项的情况下与遗留代码接口。
如果要将两个列放入字典中的相同条目,正确的方法是创建一个类型来表示字典中的记录:
public class StoreRecord
{
public int StoreInfoID;
public string Column1;
public string Column2;
}
然后,使用Dictionary<int, StoreRecord>
:
var records = new Dictionary<int, StoreRecord>();
foreach (var storeDatabaseRow in storeList)
{
var record = new StoreRecord();
record.StoreInfoID = storeDatabaseRow.store_info_id;
record.Column1 = storeDatabaseRow.Column1;
record.Column2 = storeDatabaseRow.Column2;
records[record.StoreInfoID] = record;
}
如果您的数据库记录是轻量级的并且已断开连接,为什么不直接从字典中引用整个数据库记录?
var records = new Dictionary<int, StoreInfo>();
foreach (var storeDatabaseRow in storeList)
records[storeDatabaseRow.store_info_id] = storeDatabaseRow;
或使用LINQ:
var records = storeList.ToDictionary(keySelector: row => row.store_info_id);