Tengo un método que devuelve un IEnumerable<KeyValuePair<string, ArrayList>>, pero algunas de las personas que llaman requieren que el resultado del método sea un diccionario. ¿Cómo puedo convertir el IEnumerable<KeyValuePair<string, ArrayList>>en un Dictionary<string, ArrayList>para que pueda usar TryGetValue?
método:
public IEnumerable<KeyValuePair<string, ArrayList>> GetComponents()
{
// ...
yield return new KeyValuePair<string, ArrayList>(t.Name, controlInformation);
}
llamador:
Dictionary<string, ArrayList> actual = target.GetComponents();
actual.ContainsKey("something");
c#
collections
dictionary
ienumerable
idictionary
placas de aprendizaje
fuente
fuente

Respuestas:
Si está usando .NET 3.5 o .NET 4, es fácil crear el diccionario usando LINQ:
No existe tal cosa como un
IEnumerable<T1, T2>peroKeyValuePair<TKey, TValue>está bien.fuente
Dictionaryeso tomó unIEnumerable<KeyValuePair<TKey, TValue>>igual queList<T>toma aIEnumerable<T>. Además, no hayAddRangeni siquieraAddeso que toma pares clave / valor. ¿Que pasa con eso?ToDictionary()A partir de .NET Core 2.0, el constructor
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)ahora existe.fuente