有个类,我要取哈希WMIClasses方法的值;如下:
foreach (DictionaryEntry de in ht) //ht为一个Hashtable实例
            {
                listBox1.Items.Add(de.Key);
                listBox1.Items.Add(de.Value);
            }
----------------------------------------------------
问题是:我只能取到最上层的key :“计算机系统硬件、软件操作系统”,这两个key的value 取不到,显示为:(collection)。   我想知道哈希表中 DataSet 作用? 如何取出来?
----------------------------------------------------
类程序如下:
private Hashtable _ClassHash=new Hashtable(); 
        public WMIClasses() 
        { 
            LoadWMIClasses(); 
        } 
 
        private void LoadWMIClasses() 
        { 
            _ClassHash.Clear(); 
            _ClassHash["计算机系统硬件"]=new Hashtable(); 
            Hashtable hash=(Hashtable)_ClassHash["计算机系统硬件"]; 
 
            hash["降温设备"]=new DataSet("降温设备"); 
            DataSet dataset=(DataSet)hash["降温设备"]; 
            dataset.Tables.Add(new DataTable("Win32_Fan")); 
            dataset.Tables.Add(new DataTable("Win32_HeatPipe")); 
            hash["输入设备"]=new DataSet("输入设备"); 
            dataset=(DataSet)hash["输入设备"]; 
            dataset.Tables.Add(new DataTable("Win32_Keyboard")); 
            dataset.Tables.Add(new DataTable("Win32_PointingDevice"));             _ClassHash["软件操作系统"]=new Hashtable(); 
            hash=(Hashtable)_ClassHash["软件操作系统"]; 
 
            hash["组件"]=new DataSet("组件"); 
            dataset=(DataSet)hash["组件"]; 
            dataset.Tables.Add(new DataTable("Win32_ClassicCOMApplicationClasses")); 
            dataset.Tables.Add(new DataTable("Win32_ClassicCOMClass"));
        }         public Hashtable ClassHash 
        { 
            get{return _ClassHash;} 
        } 

解决方案 »

  1.   

    this.ListBox1.Items.Add(new ListItem(de.Key, de.Value)); ;
      

  2.   

    hashtable 有key 和对应的value 
    key 和value 都是object类型
    可以将dataset作为value 存在hashtable里。
    比如
    dataset ds =new dataset();
    hashtable hs =new hashtable();
    hs.add("key",ds);
     如果要访问这个ds

    dataset ds1 =hs["key"] as dataset;
      

  3.   

    1楼,你的这个方法不行,得出的结果还是“计算机系统硬件、软件操作系统”这层key;  取不到 dataset中value; 
      

  4.   


    多谢2楼,道理我听明白了; 能否提供代码参考;
    hash["降温设备"]=new DataSet("降温设备"); 
    拿上面这个DataSet来说,我的key是:降温设备 ?
    ------------------------
    Hashtable ht = clswmi.ClassHash;
                    foreach (DictionaryEntry de in ht) //ht为一个Hashtable实例
                    {
                        DataSet ds2 = ht["降温设备"] as DataSet;
                        string strInfo = ds2.Tables[0].Rows[0][0].ToString();
                        listBox1.Items.Add(strInfo);
                    }
    -------------------------
    我的是winform; 我上面这样写,总还是抱错:未将对象引用设置到对象的实例。