J'ai une méthode qui renvoie un IEnumerable<KeyValuePair<string, ArrayList>>
, mais certains des appelants exigent que le résultat de la méthode soit un dictionnaire. Comment puis-je convertir le IEnumerable<KeyValuePair<string, ArrayList>>
en un Dictionary<string, ArrayList>
pour pouvoir l'utiliser TryGetValue
?
méthode:
public IEnumerable<KeyValuePair<string, ArrayList>> GetComponents()
{
// ...
yield return new KeyValuePair<string, ArrayList>(t.Name, controlInformation);
}
votre interlocuteur:
Dictionary<string, ArrayList> actual = target.GetComponents();
actual.ContainsKey("something");
c#
collections
dictionary
ienumerable
idictionary
plaques d'apprentissage
la source
la source
Réponses:
Si vous utilisez .NET 3.5 ou .NET 4, il est facile de créer le dictionnaire à l'aide de LINQ:
Il n'y a rien de tel qu'un
IEnumerable<T1, T2>
maisKeyValuePair<TKey, TValue>
c'est bien.la source
Dictionary
qui a pris unIEnumerable<KeyValuePair<TKey, TValue>>
commeList<T>
prend unIEnumerable<T>
. Il n'y a pas non plusAddRange
ou mêmeAdd
cela prend des paires clé / valeur. Qu'est-ce qui se passe avec ça?ToDictionary()
Depuis .NET Core 2.0, le constructeur
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)
existe désormais.la source