C # Dictionnaire Composition
-
21-09-2019 - |
Question
Disons que j'ai une liste arbitray A
class A
{
string K {get;set;}
string V {get;set;}
}
...
List<A> theList = ...
Yat-il un moyen facile de composer un dictionnaire de theList? (Quelque chose comme ce qui suit)
Dictionary<string, string> dict = magic(x => x.K, x => x.V, theList)
Je ne veux pas écrire le code suivant:
var d = new Dictionary<string, string>
foreach(var blah in theList)
d[blah.K] = blah.V
La solution
Il y a ceci:. Enumerable.ToDictionary
Vous utilisez comme ceci:
Dictionary<string, string> dict = theList.ToDictionary(e => e.K, e => e.V);
Autres conseils
Si la liste est un IEnumerable<A>
alors très certainement. Vous utilisez la méthode d'extension de ToDictionary sur la classe Enumerable dans l'espace de noms System.Linq dans .NET 3.5 et au-delà comme ceci:
Dictionary<string, string> d = theList.ToDictionary(a => a.K, a => a.V);
Ce qui vous donnera un dictionnaire où la clé est la valeur de la propriété K, et la valeur est la valeur de la propriété V.
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>
est ce que vous cherchez:
theList.ToDictionary(x => x.K, x => x.V);
Dictionary<string,string> dict = new Dictionary<string,string>();
theList.ForEach( param => dict[param.K] = param.V );
Un peu plus court, mais toujours essentiellement une boucle de for-each
. J'aime mieux la solution ToDictionary()
.