2016-05-03 11 views
0

Dies ist wahrscheinlich einfach, aber die Suche nach Stack-Überlauf hat mir nicht die gewünschten Ergebnisse.C# dictionary - Hinzufügen von Werten (Liste) unter einem Schlüssel

Ich habe ein einfaches Wörterbuch definiert als

var GetAllInjData = new Dictionary<double, List<double>>(); 

Alles, was ich tun möchte, die die Liste der Werte an jedem Schlüssel aus dem dict holen ist, und fügen Sie einen einzelnen Wert zu bekommen!

Antwort

0

Ich glaube, Sie dies mit LINQ tun können:

GetAllInjData[<key>].Sum(); 
2
GetAllInjData.SelectMany(a => a.Value).Sum(); 

bearbeiten nach der Schleife

IEnumerable<double> FieldProd = GetAllInjData.Select(a => a.Value.Sum()); 
+0

, wie ich in einer Schleife setzen dies tun, dh für jede Taste im dict. @ Tony – Modi

+0

Was ist der Zweck, es in eine Schleife zu setzen? .Sum() gibt die Summe aller Elemente zurück. – Tony

+0

Dies ist, was ich schließlich getan habe: Liste FieldProd = neue Liste (); für (int k = 0; k Modi

0

sehen Wenn Sie die Summe für jede Taste dann möchten, können Sie Verwenden Sie Select, um jedes Schlüssel/Wert-Paar auf einen neuen Typ mit dem Schlüssel und der Summe der Werte als Eigenschaften zu projizieren:

GetAllInjData.Select(kvp => new {Key = kvp.Key, Value = kvp.Value.Sum()}) 
0

Try this:

double key = 1; //for example 
double sum = 0.0; 
GetAllInjData[key].ForEach(x => sum += x); 
0

Wie so:

var sums = 
    from keyVal in GetAllInjData 
    select new 
    { 
     ForKey = keyVal.Key, 
     SumIs = keyVal.Value.Sum() 
    }; 

foreach(var sum in sums) 
    Debug.WriteLine($"Key: {sum.ForKey} Sum: {sum.SumIs}"); 
0

Versuchen Sie, diese

  Dictionary<double, List<double>> GetAllInjData = new Dictionary<double, List<double>>() { 
       {1, new List<double>() {1,2,3,4,5,6}}, 
       {2, new List<double>() {11,12,13,14,15,16}}, 
       {3, new List<double>() {21,22,23,24,25,26}} 
      }; 
      double results = GetAllInjData[2].Sum(); 
Verwandte Themen