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
Dictionary
eso tomó unIEnumerable<KeyValuePair<TKey, TValue>>
igual queList<T>
toma aIEnumerable<T>
. Además, no hayAddRange
ni siquieraAdd
eso 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