2011-02-09 42 views
1

喂在c# 我有兩個散列表對象,它的鍵/值對是相同 ,我要檢查,如果兩個哈希表的鍵/值對是相等..哈希表A等於散列表B控制

我試圖哈希表的等同方法,但沒有工作

我應該檢查所有項目與foreach?

感謝

回答

3

你想要做的是採取一個聯合,看看大小是否與計數相同。你可以做一些改變,但你必須這樣做。這些可以很容易地使用LINQ擴展方法完成,但由於您使用的哈希表,你必須使用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); 

我通常建議在詞典哈希表來獲取類型安全,但(<>)可以讓你使用Linq的東西,只需找到舊的Hashtable即可。

3

我試過了哈希表的方法相同但不工作的

這將做一個參考比較,看是否兩個引用哈希表是相同的。這不是你想要的。

我用foreach檢查所有項目?

是的。檢查兩個哈希表是否具有相同數量的項目,並且第一個中的所有鍵/值對都在第二個哈希表中。

+0

是否需要檢查兩個方向?驗證兩個哈希表是否具有相同的密鑰並且第一個中的所有內容都在第二個中,並且密鑰/值對是否相等,是不是足夠了? – 2011-02-09 16:13:44