У меня есть метод, который возвращается IEnumerable<KeyValuePair<string, ArrayList>>
, но некоторые вызывающие стороны требуют, чтобы результатом метода был словарь. Как я могу преобразовать IEnumerable<KeyValuePair<string, ArrayList>>
в a 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");
Если вы используете .NET 3.5 или .NET 4, легко создать словарь с помощью LINQ:
Dictionary<string, ArrayList> result = target.GetComponents()
.ToDictionary(x => x.Key, x => x.Value);
Нет такой вещи, как IEnumerable
, но KeyValuePair
в порядке.