无论索引值如何,都可以向Hashtable添加值

时间:2016-11-08 21:56:29

标签: c# .net hashtable

我正在从数据库中检索列表中的数据,并希望将其两个列存储在哈希表中。但是我能够在散列表中只插入一行,其中索引是0.有没有办法插入到散列表而不考虑索引?我现在正在使用以下方法。有什么建议吗?

foreach (StoreInfo store_info_id in StoreList)
            {

                Hashtable hashTable = new Hash table();
                hashTable.Add(StoreList[0].store_info_id, StoreList[0].RetailControlNumber);
            }

1 个答案:

答案 0 :(得分:2)

三点:

    在可能有类型参数之前,
  1. Hashtable只是Dictionary<object, object>。所以,今天已经没有任何理由使用Hashtable了,除非您在Hashtable是唯一选项的情况下与遗留代码接口。

  2. 如果要将两个列放入字典中的相同条目,正确的方法是创建一个类型来表示字典中的记录:

    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;
    }
    
  3. 如果您的数据库记录是轻量级的并且已断开连接,为什么不直接从字典中引用整个数据库记录?

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