你的Dt.Rows[i]["key"]和Dt.Rows [i]["value"]里面有值没有?

解决方案 »

  1.   

    dt 是一个DATATABLE,我前面的代码是:
    DataTable Dt=ExecuteSqlDs(strSql2).Tables [0];
    我在循环里写上: Response.Write (Dt.Rows[i]["key"].ToString());是可以出来的,证明里面有值,不为空,但不知道为什么进不了哈希表,请高手继续指点,谢谢。
      

  2.   

    Hashtable 里一条数据都没有吗?key不允许重复的
      

  3.   

    我循环前面刚刚建的hashtable,循环里面没有重复的数据,为什么不行呢,继续求教。。
      

  4.   

    现在的问题是hashtable.count也能够出来正确的结果,可是判断是否存在与哈希表里所用的
    hashtable.contains(key),传入key却得不出结果来,请教正确写法!!!!!!!
      

  5.   

    你是用的迭代器来获取值得吗?
    public string getHashValue(HashTable myHT,string your_key)
    {
       IDictionaryEnumerator enumrator = myHT.GetEnumerator();
       while(enumrator.MoveNext())
       {
         if(enumrator.Key.ToString()==your_key)
         {
            return enumrator.Value.ToString();
         }
       }
       return string.Empty;
    }
      

  6.   

    我认为现在我已经把值都放到哈希表里去了,因为在页面能够输出来。但是现在我想在哈希表里找一个值的话,却只能找到最后一条记录。我的代码是:
           foreach (DictionaryEntry De in myHT) //ht为一个Hashtable实例
                   { 
            if (De.Key.ToString()  == temp )
    {
                          Response.Write (De.Value.ToString () );
    }
                   }
    现在temp的值如果是哈希表里最后一条记录就能找到,其他记录就找不到,急死我了!!!!请高手指点,谢谢谢谢
      

  7.   

    我是这样用的,
    ht.Add("a","A");
    string x;
    x=ht("a");
      

  8.   

    当然啦,你不要用Response.Write (De.Value.ToString ()) 嘛,迭代器还没有结束遍历,当然输出会有问题啦,你要在遍历之后马上获得值,比如break掉循环。
    或者在迭代器结束遍历之后再Response也可以的。
      

  9.   

    哈希表存储数据结构是这样的(键,值)
    其中键是绝对不可以有重复的.
    值是object对象.
    另外楼主的编程风格需要改正.
    myHT.Add (Dt.Rows[i]["key"].ToString(),Dt.Rows [i]["value"].ToString ());
    不知道你是想省事还是怎么着.
    你就不能用个变量代替Dt.Rows[i]["key"].ToString()