205

我有一个返回 的方法IEnumerable<KeyValuePair<string, ArrayList>>,但是一些调用者要求方法的结果是字典。如何将其转换IEnumerable<KeyValuePair<string, ArrayList>>为 aDictionary<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");
4

2 回答 2

359

如果您使用 .NET 3.5 或 .NET 4,使用 LINQ 创建字典很容易:

Dictionary<string, ArrayList> result = target.GetComponents()
                                      .ToDictionary(x => x.Key, x => x.Value);

没有 a 这样的东西,IEnumerable<T1, T2>但是 aKeyValuePair<TKey, TValue>很好。

于 2010-04-14T10:35:47.710 回答
12

从 .NET Core 2.0 开始,构造函数Dictionary<TKey,TValue>(IEnumerable<KeyValuePair<TKey,TValue>>)现在已经存在。

于 2020-04-26T14:09:43.680 回答