向Hashtable中添加值,而不考虑索引值

本文关键字:不考虑 索引值 Hashtable 添加 | 更新日期: 2023-09-27 18:17:13

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

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

向Hashtable中添加值,而不考虑索引值

三点:

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