2016-03-31 8 views
2

ich habe zwei Dictionarys A & B, ich will in A gibt es in B. In der Vergangenheit habe ich im Vergleich Listen mit dem folgenden, wenn alle Einträge sehen:alle Einträge aus einem Wörterbuch Überprüfung in einem anderen Wörterbuch sind

var set1 = new HashSet<String>(list1); 
var set2 = new HashSet<String>(list2); 

return set1.SetEquals(set2); 

Was ich habe gedacht, um einfach Schleife über jeden Wert in Wörterbuch A mit:

dictA.TryGetValue(dictBvalue, out item) 

dies auf dem Element var null zurück, wenn der Wert nicht vorhanden ist, aber dies scheint ein wenig langatmig .

Gibt es eine schnelle und effiziente Möglichkeit Wörterbücher zu vergleichen?

Danke.

Antwort

2

Sie könnten All Erweiterung verwenden und dies tun.

var allexist = list1.All(x=> list2.ContainsKey(x.Key) && list2[x.Key] == x.Value) 
+0

Typo verwenden können, shuold es 'X' sein :-) –

+0

das tut, was ich brauche schnell und effciently, Dank :) –

+0

Nur um zu klären, ob alle Elemente in list1 sind in list2 gibt das dann true zurück, wenn eines der Elemente in list1 nicht in list2 vorkommt, dann gibt es false zurück? –

0

hier ist die Lösung, wenn Sie

Dictionary<string, string> dictA = new Dictionary<string, string>(); 
Dictionary<string, string> dictB = new Dictionary<string, string>(); 
bool allexist = true; 

foreach (var itemA in dictA) 
{ 
    if (!dictB.ContainsKey(itemA.Key)) 
    { 
     allexist = false; 
    } 
} 
+0

Es gibt ** viele ** Optimierungen möglich, vergleichen Sie es mit [DictionaryEquals Methode aus dieser Antwort] (http://stackoverflow.com/questions/3928822/comparing-2-dictionarystring-string-instances/3928856#3928856) – synek317

0

Eigentlich über jeden Wert in einer Schleife möchten, können Sie für ein Verfahren gefragt, Wörterbücher, aber Ihr Code-Beispiel finden Sie in HashSet vergleichen, welche unterschiedlich ist.

Für HashSets können Sie die Methoden IsSubsetOf und SetEquals verwenden.

Wörterbücher zu vergleichen, Sie DictionaryEquals method from this answer

+0

Das war nur ein Beispiel dafür, was ich mit Listen machen würde. In diesem Fall suche ich nach einer ähnlichen Lösung für Wörterbücher. Ich überprüfe diesen Link, danke. –

Verwandte Themen