这个问题已经在这里有一个答案:
- LINQ转换字典查询 2个回答
我有一个有签名字典: Dictionary<int, List<string>>
。 我想它的签名转换为查询: Lookup<int, string>
。
我试过了:
Lookup<int, string> loginGroups = mapADToRole.ToLookup(ad => ad.Value, ad => ad.Key);
但是,这是行不通的那么好。
这个问题已经在这里有一个答案:
我有一个有签名字典: Dictionary<int, List<string>>
。 我想它的签名转换为查询: Lookup<int, string>
。
我试过了:
Lookup<int, string> loginGroups = mapADToRole.ToLookup(ad => ad.Value, ad => ad.Key);
但是,这是行不通的那么好。
你可以使用:
var lookup = dictionary.SelectMany(p => p.Value
.Select(x => new { p.Key, Value = x}))
.ToLookup(pair => pair.Key, pair => pair.Value);
(你可以使用KeyValuePair
,而不是匿名类型-我大多没有格式化的原因。)
这实在是太丑陋,但它的工作。 您可以更换任何代码创建的字典开始虽然? 这很可能是清洁工。