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
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top