你好c# 我有两个哈希表对象,其中键/值对是相同的 我想检查两个哈希表键/值对是否相等..
我尝试了哈希表的相同方法但没有工作
我应该用foreach检查所有项目吗?
感谢
答案 0 :(得分:3)
我尝试了哈希表的相同方法但没有工作
这将进行参考比较,以查看对哈希表的两个引用是否相同。那不是你想要的。
我应该用foreach检查所有物品吗?
是。检查两个哈希表是否具有相同数量的项目,并确保第一个中的所有键/值对都在第二个中。
答案 1 :(得分:3)
你想要做的是采取一个集合联合,看看大小是否与计数相同。你可以做一组差异但是你必须两个方面都做。这些可以通过Linq扩展方法轻松完成,但由于您使用的是Hashtable,因此您必须使用Cast()将其转换为IEnumerable:
var table1 = new Hashtable {{"A", 1}, {"B", 2}, {"C", 3}};
var table2 = new Hashtable {{"B", 2}, {"A", 1}, {"C", 3}};
bool same = table1.Cast<DictionaryEntry>().Union(table2.Cast<DictionaryEntry>()).Count() == table1.Count;
Console.WriteLine("Same = " + same);
我通常推荐使用Hashtable上的Dictionary来获得类型安全性,但Cast&lt;&gt;()允许你使用旧的Hashtable查找的Linq内容。