C# Dictionary-Zusammensetzung
-
21-09-2019 - |
Frage
Sagen wir, ich habe einen beliebigen Liste
class A
{
string K {get;set;}
string V {get;set;}
}
...
List<A> theList = ...
Gibt es eine einfache Art zu Komponieren ein Wörterbuch aus theList?(so etwas wie die folgenden)
Dictionary<string, string> dict = magic(x => x.K, x => x.V, theList)
Ich don ' T wollen, schreiben Sie den folgenden code:
var d = new Dictionary<string, string>
foreach(var blah in theList)
d[blah.K] = blah.V
Lösung
Es ist dies: Enumerable.ToDictionary.
Verwenden Sie es wie folgt:
Dictionary<string, string> dict = theList.ToDictionary(e => e.K, e => e.V);
Andere Tipps
Wenn die Liste ein IEnumerable<A>
dann auf jeden Fall.Verwenden Sie die ToDictionary Methode der Enumerable-Klasse in der System.Linq-namespace in .NET 3.5 und darüber hinaus, wie so:
Dictionary<string, string> d = theList.ToDictionary(a => a.K, a => a.V);
Die geben Sie ein Dictionary, in dem der Schlüssel ist, den Wert in die K-Eigenschaft, und der Wert ist der Wert in der V-Eigenschaft.
var dict = theList.Cast<A>().ToDictionary(a => a.K, a => a.V);
Dictionary<string, string> dict = theList.ToDictionary( x => x.K , x=> x.V);
Enumarable.ToDictionary<TSource,TKey>
ist das, was Sie suchen:
theList.ToDictionary(x => x.K, x => x.V);
Dictionary<string,string> dict = new Dictionary<string,string>();
theList.ForEach( param => dict[param.K] = param.V );
Ein wenig kürzer, aber im Grunde immer noch ein for-each
Schleife.Ich mag die ToDictionary()
Lösung besser.