1. ホーム
  2. c#

[解決済み】IEnumerable<KeyValuePair<>>からDictionaryを再作成する。

2022-04-14 05:26:06

質問

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

解決方法は?

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

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

というものはありません。 IEnumerable<T1, T2> でなく KeyValuePair<TKey, TValue> は大丈夫です。