与えられた
Dictionary<string, List<string>> myDict = new Dictionary<string, List<string>>()
{
"Apples", new List<string>() { "Green", "Red" },
"Grapefruits", new List<string>() { "Sweet", "Tart" },
}
子から親へのマッピングを作成したい、例えば
「緑」=>「りんご」
私の特定のユースケースでは、子文字列はグローバルに一意であるため(たとえば、心配するグリーングレープフルーツはありません)、マッピングはになりますDictionary<string,string>
。
myDict
従来の方法で繰り返すことで達成するのはかなり簡単です。
Dictionary<string, string> map = new Dictionary<string,string>();
foreach (KeyValuePair<string, List<string>> kvp in myDict)
{
foreach (string name in kvp.Value)
{
map.Add(name, kvp.Key);
}
}
これはLinqで実行できますか?
同じデータ構造をフラット化することについて、非常によく似た質問があります
Linqを使用してリストのC#ディクショナリをフラット化する
ただし、それは辞書キーとの関係を維持しません。
SelectMany(関連する質問で使用されているアプローチ)に関する優れたビジュアルチュートリアルを確認しましたが、キーを関連付ける方法がわかりません。