从哈希表中查找值

时间:2012-07-02 12:36:49

标签: c# .net collections hashtable

如果我有一个通用列表,我会做一些像这样的事情

myListOfObject.FindAll(x=>(x.IsRequired==false));

如果我需要在Hashtable中执行类似的操作,该怎么办?复制到临时hashtable并循环和比较将是我要尝试的最后一件事: - (

1 个答案:

答案 0 :(得分:8)

首先,使用System.Collections.Generic.Dictionary<TKey, TValue>获得更好的强类型支持,而不是Hashtable

如果您只需找到一个键或一个值,请使用方法ContainsKey(object key)ContainsValue(object value),这两种方法都可以在Hashtable类型中找到。

或者您可以更进一步,在Hashtable部分使用linq扩展程序:

Hashtable t = new Hashtable();
t.Add("Key", "Adam");

// Get the key/value entries.
var itemEntry = t.OfType<DictionaryEntry>().Where(de => (de.Value as string) == "Adam");

// Get just the values.
var items = t.Values.OfType<string>().Where(s => s == "Adam");

// Get just the keys.
var itemKey = t.Keys.OfType<string>().Where(k => k == "Key");