У меня есть метод, который возвращает IEnumerable<KeyValuePair<string, ArrayList>>
, но некоторые из вызывающих требуют, чтобы результат метода был словарь. Как я могу преобразовать IEnumerable<KeyValuePair<string, ArrayList>>
в Dictionary<string, ArrayList>
так, чтобы я мог использовать TryGetValue
?
метод:
public IEnumerable<KeyValuePair<string, ArrayList>> GetComponents()
{
// ...
yield return new KeyValuePair<string, ArrayList>(t.Name, controlInformation);
}
вызывающий:
Dictionary<string, ArrayList> actual = target.GetComponents();
actual.ContainsKey("something");
c#
collections
dictionary
ienumerable
idictionary
learnerplates
источник
источник
Ответы:
Если вы используете .NET 3.5 или .NET 4, легко создать словарь с помощью LINQ:
Там нет такого понятия , как ,
IEnumerable<T1, T2>
ноKeyValuePair<TKey, TValue>
это хорошо.источник
Dictionary
который будет такимIEnumerable<KeyValuePair<TKey, TValue>>
же, какList<T>
берет aIEnumerable<T>
. Также нетAddRange
или дажеAdd
что принимает пары ключ / значение. Что с этим?ToDictionary()
Начиная с .NET Core 2.0, конструктор
Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)
теперь существует.источник