2009-11-30 11 views
6

Wie kann ich die Werte einer Hash-Tabelle von einer anderen Hash-Tabelle aktualisieren,Update von einer anderen Hashtabelle hashtable?

, wenn die zweite Hash-Tabelle neue Schlüssel enthält, dann müssen sie bis zum 1. sonst sollen hinzugefügt werden, den Wert der ersten Hash-Tabelle aktualisieren.

+0

Haben Sie einen Code, der uns zeigt, wie wir Ihnen helfen können? Mit anderen Worten, was hast du probiert? –

+0

Sie möchten also zwei Hash-Tabellen zusammenführen? –

+0

ja genau das letzte mit alten Hashtable. – shahjapan

Antwort

16

Bei Bedarf können Sie dies in eine Erweiterungsmethode rollen (vorausgesetzt, Sie verwenden .NET 3.5 oder neuer).

Hashtable one = GetHashtableFromSomewhere(); 
Hashtable two = GetAnotherHashtableFromSomewhere(); 

one.UpdateWith(two); 

// ... 

public static class HashtableExtensions 
{ 
    public static void UpdateWith(this Hashtable first, Hashtable second) 
    { 
     foreach (DictionaryEntry item in second) 
     { 
      first[item.Key] = item.Value; 
     } 
    } 
} 
+0

Dies erfasst keine der Anforderungen "wenn zweite Hashtabelle neue Schlüssel enthält, dann müssen sie zu 1. hinzugefügt werden" und wird höchstwahrscheinlich eine Ausnahme auslösen – ParmesanCodice

+5

@ParmesanCodice: Es erfüllt diese Anforderung * genau *. Warum versuchst du es nicht und siehst es selbst? Aus der MSDN-Dokumentation: "Sie können die Item-Eigenschaft auch zum Hinzufügen neuer Elemente verwenden, indem Sie den Wert eines Schlüssels festlegen, der nicht in der Hashtable vorhanden ist. Wenn der angegebene Schlüssel jedoch bereits in der Hashtable vorhanden ist, legen Sie die Item-Eigenschaft fest überschreibt den alten Wert. " http://msdn.microsoft.com/en-us/library/system.collections.hashtable.item.aspx – LukeH

+0

@Luke, meine Entschuldigung Ich war mir dieses Verhaltens nicht bewusst. – ParmesanCodice

0

Einige Code auf, dass (basierend auf Dictionary):

 foreach (KeyValuePair<String, String> pair in hashtable2) 
     { 
      if (hashtable1.ContainsKey(pair.Key)) 
      { 
       hashtable1[pair.Key] = pair.Value; 
      } 
      else 
      { 
       hashtable1.Add(pair.Key, pair.Value); 
      } 
     } 

Ich bin sicher, dass es eine elegantere Lösung mithilfe von LINQ (obwohl ich Code in 2.0;)).

+0

Dies wird nicht kompiliert. Soll es wirklich C# oder nur Pseudocode sein? – LukeH

+0

@Luke: Danke, ich sollte wirklich in C# programmieren, wenn ich Antworten auf solche Fragen gebe ... – Bobby

+0

Es kompiliert jetzt gut und funktioniert korrekt für 'Dictionary ', aber es funktioniert nicht für 'Hashtable'. – LukeH

Verwandte Themen