J'ai une méthode qui retourne un IEnumerable<KeyValuePair<string, ArrayList>>
, mais certains appelants exigent que le résultat de la méthode soit un dictionnaire. Comment puis-je convertir le IEnumerable<KeyValuePair<string, ArrayList>>
dans une Dictionary<string, ArrayList>
afin que je puisse 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");
Si vous utilisez .NET 3.5 ou .NET 4, il est facile de créer le dictionnaire à l'aide de LINQ:
Dictionary<string, ArrayList> result = target.GetComponents()
.ToDictionary(x => x.Key, x => x.Value);
Il n'y a rien de tel qu'un IEnumerable<T1, T2>
mais un KeyValuePair<TKey, TValue>
c'est bien.