Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从哈希表中查找值_C#_.net_Collections_Hashtable - Fatal编程技术网

C# 从哈希表中查找值

C# 从哈希表中查找值,c#,.net,collections,hashtable,C#,.net,Collections,Hashtable,如果我有一个通用列表,我会做这样的事情 myListOfObject.FindAll(x=>(x.IsRequired==false)); 如果我需要在哈希表中执行类似的操作,该怎么办?复制到临时哈希表并循环和比较是我最不愿意尝试的事情:-(首先,使用System.Collections.Generic.Dictionary,以获得比哈希表更好的强类型支持 如果只需要查找一个键或一个值,请使用方法ContainsKey(对象键)或ContainsValue(对象值),这两种方法都可以在哈

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

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

如果我需要在
哈希表中执行类似的操作,该怎么办?复制到临时
哈希表
并循环和比较是我最不愿意尝试的事情:-(

首先,使用
System.Collections.Generic.Dictionary
,以获得比
哈希表
更好的强类型支持

如果只需要查找一个键或一个值,请使用方法
ContainsKey(对象键)
ContainsValue(对象值)
,这两种方法都可以在
哈希表
类型中找到

或者您可以更进一步,在
哈希表
部分上使用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");
Hashtable t=newhashtable();
t、 添加(“关键”、“亚当”);
//获取键/值条目。
var itemEntry=t.OfType(),其中(de=>(de.Value作为字符串)==“Adam”);
//仅获取值。
var items=t.Values.OfType(),其中(s=>s==“Adam”);
//只拿钥匙。
var itemKey=t.Keys.OfType(),其中(k=>k==“Key”);

如果您使用的是>.NET 1.1(99.999999%),请不要再使用哈希表。请改用强类型字典。哈希表h;h.ContainsKey(YourKeyHere)或h.ContainsValue(YourValueHere)