Sélectionnez un Dictionnaire<T1, T2> avec LINQ
J'ai utilisé la fonction "sélectionner" mot-clé et l'extension de la méthode de retour d'un IEnumerable<T>
avec LINQ, mais j'ai besoin de revenir un générique Dictionary<T1, T2>
et ne peut pas le comprendre. L'exemple que j'ai appris cela de servir à quelque chose dans une forme semblable à la suivante:
IEnumerable<T> coll = from x in y
select new SomeClass{ prop1 = value1, prop2 = value2 };
J'ai aussi fait la même chose avec les méthodes d'extension. Je suppose que depuis les éléments dans un Dictionary<T1, T2>
peut être réitéré que KeyValuePair<T1, T2>
que je puisse simplement remplacer "SomeClass" dans l'exemple ci-dessus avec "new KeyValuePair<T1, T2> { ...
", mais cela ne fonctionne pas (la Clé et la Valeur ont été marqués comme étant en lecture seule, donc je ne pouvais pas compiler ce code).
Est-ce possible, ou dois-je le faire en plusieurs étapes?
Grâce.
Vous devez vous connecter pour publier un commentaire.
Les extensions de méthodes fournissent également un ToDictionary extension. Il est assez simple à utiliser, l'utilisation générale est le passage d'un lambda sélecteur pour la clé et l'obtention de l'objet en tant que valeur, mais vous pouvez passer à un lambda sélecteur pour à la fois la clé et la valeur.
Puis
objectDictionary[1]
contiendrait la valeur "Bonjour"C'est en supposant que
SomeClass.prop1
est deKey
pour le dictionnaire..ToDictionary(item => item.prop1, item => item.prop2);
à définir explicitement une valeur trop.Une collection de
KeyValuePair
est encore plus explicite, et exécute très bien.