Eu tenho um método que retorna um IEnumerable<KeyValuePair<string, ArrayList>>
, mas alguns dos chamadores exigem que o resultado do método seja um dicionário. Como converter o IEnumerable<KeyValuePair<string, ArrayList>>
em um Dictionary<string, ArrayList>
para que eu possa usar TryGetValue
?
método:
public IEnumerable<KeyValuePair<string, ArrayList>> GetComponents()
{
// ...
yield return new KeyValuePair<string, ArrayList>(t.Name, controlInformation);
}
chamador:
Dictionary<string, ArrayList> actual = target.GetComponents();
actual.ContainsKey("something");
c#
collections
dictionary
ienumerable
idictionary
learnerplates
fonte
fonte
Respostas:
Se você estiver usando o .NET 3.5 ou .NET 4, é fácil criar o dicionário usando o LINQ:
Não existe,
IEnumerable<T1, T2>
mas aKeyValuePair<TKey, TValue>
está bem.fonte
Dictionary
que tomou umaIEnumerable<KeyValuePair<TKey, TValue>>
tal comoList<T>
leva umIEnumerable<T>
. Também não háAddRange
ou mesmoAdd
que leva pares de chave / valor. O que há com isso?ToDictionary()
A partir do .NET Core 2.0, o construtor
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)
já existe.fonte