205

を返すメソッドがありますが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");
4

2 に答える 2

359

.NET 3.5 または .NET 4 を使用している場合は、LINQ を使用して簡単に辞書を作成できます。

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

というものはありません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 に答える