C# 使用值从哈希表中查找

C# 使用值从哈希表中查找,c#,linq,C#,Linq,我有一个如下的哈希表: private Hashtable Sid2Pid = new Hashtable(); Sid2Pid.Add(1,10); Sid2Pid.Add(2,20); Sid2Pid.Add(3,20); Sid2Pid.Add(4,30); 现在,如何使用LinQ从上面的哈希表中获取值为20的键列表ahashtable是DictionaryEntry的IEnumerable,只需稍加转换即可将其转换为LinQ操作符可以处理的内容: var res = from kv

我有一个如下的哈希表:

private Hashtable Sid2Pid = new Hashtable();

Sid2Pid.Add(1,10);
Sid2Pid.Add(2,20);
Sid2Pid.Add(3,20);
Sid2Pid.Add(4,30);

现在,如何使用LinQ从上面的哈希表中获取值为20的键列表a
hashtable
DictionaryEntry
IEnumerable
,只需稍加转换即可将其转换为LinQ操作符可以处理的内容:

var res = from kv in myHash.Cast<DictionaryEntry>
          where (int)kv.Value = targetValue
          select (int)kv.Key;
var res=myHash.Cast中的kv
其中(int)kv.Value=目标值
选择(int)千伏键;
注意。如果您传递不同的类型,这将引发异常。

使用
字典而不是哈希表(请参阅了解原因),然后执行以下操作:

var keys = Sid2Pid.Where(kvp => kvp.Value == 20)
                  .Select(kvp => kvp.Key);