2012-05-02 10 views
9

私は、署名がある辞書:Dictionary<int, List<string>>を持っています。私はそれをLookupに変換したいと思います:Lookup<int, string>辞書をルックアップに変換するにはどうすればよいですか?

私が試した:

Lookup<int, string> loginGroups = mapADToRole.ToLookup(ad => ad.Value, ad => ad.Key); 

しかし、それはとてもうまく機能していないが。

あなたが使用することができ

答えて

17

var lookup = dictionary.SelectMany(p => p.Value 
             .Select(x => new { p.Key, Value = x})) 
         .ToLookup(pair => pair.Key, pair => pair.Value); 

(。あなたが代わりに匿名型のKeyValuePairを使用することができます - 私はほとんどの理由をフォーマットするためではありませんでした)

それはかなり醜いですが、それが働くだろう。どんなコードでも置き換えることができますでも辞書は始まりますか?それはおそらくクリーナーでしょう。

+0

私はあなたが意味すると思う: '(x => new {Key = p.Key、Value = x})' –

+0

@SaeedAmiri:いいえ、私は書いたものを意味しました。それはそのままでうまくいくはずです - 'Key'プロパティ名が推定されます。 –

+0

いいえ私はそれを試したことはありません:) –

関連する問題