2012-11-15 122 views
-1

我在.net项目中遇到问题。我使用System.Collections.Hashtable存储的值,并添加像在System.Collections.Hashtable中搜索单词

键值“putreturnsbetweenparagraphs”

,我要搜索单词“之间”对键值。

我现在用的

//Declare hash table 
System.Collections.Hashtable _Index; 

//add values to hashtable 
_Index.Add("putreturnsbetweenparagraphs",theword); 

//search section 
string searchWord="between"; 
      if (_Index.ContainsKey(searchWord)) 
      {  
       //code 
      } 

这方面有任何想法?

+0

你打算在散列表中添加多个键然后你想要搜索吗? –

+0

为什么你有四个c#标签?没有关于你的问题的特定版本(甚至没有任何C#特定的),即使有我希望你添加一个指定版本的单个标签。这个问题也没有任何特定的asp.net。这真的只是.NET。 –

回答

1
string value = (string)_Index.Cast<System.Collections.DictionaryEntry>() 
          .First(x => (x.Key as string).Contains(searchWord)) 
          .Value; 
+1

谢谢@ L.B为新线程。我现在用的 '的foreach(在_index的DictionaryEntry项) { 如果(Item.Key.ToString()。包含(搜索内容)){ // 代码 } }' –

3

首先,除非你是真的使用.NET 1.1,你应该看看使用Dictionary<TKey, TValue>而不是非通用Hashtable

除此之外,一个直接的键/值地图不会帮助你很多。基本上你需要改变你的数据结构,或者遍历全部集合中的键,并检查它们是否有其中的任何包含目标字符串。实际上,您将映射视为一系列键/值对 - 哈希给出的快速查找将无关紧要,因为它仅在执行相等查找时很有用。