如何将字典转换为查找?

时间:2012-05-02 19:18:25

标签: c# .net list dictionary lookup

我有一个有签名的词典:Dictionary<int, List<string>>。我想将其转换为带签名的Lookup:Lookup<int, string>

我试过了:

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

但是效果并不好。

1 个答案:

答案 0 :(得分:20)

您可以使用:

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

(您可以使用KeyValuePair而不是匿名类型 - 我主要不是出于格式化原因。)

这很难看,但它会起作用。你可以替换创建字典的任何代码吗?那可能会更清洁。