我有以下哈希表:
private Hashtable Sid2Pid = new Hashtable();
Sid2Pid.Add(1,10);
Sid2Pid.Add(2,20);
Sid2Pid.Add(3,20);
Sid2Pid.Add(4,30);
现在如何使用LinQ
从上面的哈希表中获取值为20的键列表答案 0 :(得分:4)
HashTable
是IEnumerable
的{{1}},只需一点点转换就可以将其转换为LINQ运算符可以处理的内容:
DictionaryEntry
NB。如果你传递不同的类型,这将抛出异常。
答案 1 :(得分:4)
使用Dictionary<int, int>
代替Hashtable(请参阅here了解原因),然后执行以下操作:
var keys = Sid2Pid.Where(kvp => kvp.Value == 20)
.Select(kvp => kvp.Key);