从哈希表中查找一个值。

5
如果我有一个通用列表,我会像这样做:
myListOfObject.FindAll(x=>(x.IsRequired==false));

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

1
如果您正在使用> .NET 1.1(在99.999999%的情况下),请不要再使用哈希表。改用强类型字典。 - Tim Schmelter
Hashtable h; h.ContainsKey(YourKeyHere) 或 h.ContainsValue(YourValueHere)。 - Mahdi Tahsildari
1个回答

13
首先,使用 System.Collections.Generic.Dictionary<TKey, TValue> 来获得更好的强类型支持,而不是使用 Hashtable
如果你只需要查找一个键或一个值,请使用在 Hashtable 类型中找到的方法 ContainsKey(object key)ContainsValue(object value)
或者你可以更进一步,在 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");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接