12 Stimmen

Wie summiere ich Werte aus zwei Wörterbüchern in C#?

Ich habe zwei Wörterbücher mit der gleichen Struktur:

Dictionary<string, int> foo = new Dictionary<string, int>() 
{
    {"Table", 5 },
    {"Chair", 3 },
    {"Couch", 1 }
};

Dictionary<string, int> bar = new Dictionary<string, int>() 
{
    {"Table", 4 },
    {"Chair", 7 },
    {"Couch", 8 }
};

Ich möchte die Werte der Wörterbücher zusammenzählen und ein drittes Wörterbuch mit den Schlüsseln und den Gesamtwerten für jeden Schlüssel zurückgeben:

Table, 9
Chair, 10
Couch, 9

Meine derzeitige Lösung besteht darin, das Wörterbuch in einer Schleife zu durchlaufen und sie auf diese Weise herauszuziehen, aber ich weiß, dass diese Lösung weder besonders leistungsfähig noch besonders lesbar ist. Allerdings stoße ich auf eine Ziegelmauer, die versucht, mit einer Lösung in LINQ zu kommen.

2voto

Charles Punkte 3684

Ich habe eine kleine Erweiterungsmethode geschrieben, die eine Liste von Wörterbüchern mit Int-Werten zusammenführen soll. Ich habe Code aus dieser Frage verwendet, um es zu tun, so dass ich teilen

    public static Dictionary<TSource, Int32> MergeIntDictionary<TSource>( this ICollection<Dictionary<TSource, Int32>> source )
    {
        return source.Aggregate( ( cur, next ) => cur.Concat( next )
            .GroupBy( o => o.Key )
            .ToDictionary( item => item.Key, item => item.Sum( o => o.Value ) ) );
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X