J'ai utilisé le mot clé "select" et la méthode d'extension pour renvoyer un IEnumerable<T>
avec LINQ, mais j'ai besoin de renvoyer un générique Dictionary<T1, T2>
et je ne peux pas le comprendre. L'exemple que j'ai appris en utilisant quelque chose sous une forme similaire à la suivante:
IEnumerable<T> coll = from x in y
select new SomeClass{ prop1 = value1, prop2 = value2 };
J'ai également fait la même chose avec les méthodes d'extension. J'ai supposé que puisque les éléments de a Dictionary<T1, T2>
peuvent être itérés, KeyValuePair<T1, T2>
je pouvais simplement remplacer "SomeClass" dans l'exemple ci-dessus par " new KeyValuePair<T1, T2> { ...
", mais cela ne fonctionnait pas (la clé et la valeur étaient marquées en lecture seule, je ne pouvais donc pas compiler ce code ).
Est-ce possible ou dois-je le faire en plusieurs étapes?
Merci.
.ToDictionary(item => item.prop1, item => item.prop2);
pour explicitement définir la valeur aussi.Une collection de
KeyValuePair
est encore plus explicite et s'exécute très bien.la source