Вопрос по dictionary, list, .net, lookup, c# – Как я могу преобразовать словарь в поиск? [Дубликат]

11

This question already has an answer here:

LINQ Convert Dictionary to Lookup 2 answers

У меня есть словарь, который имеет подпись:Dictionary<int, List<string>>, Я хотел бы преобразовать его в Lookup с подписью:Lookup<int, string>.

Я старался:

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

Но это не так хорошо работает.

Ваш Ответ

1   ответ
20

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

(Вы могли бы использоватьKeyValuePair вместо анонимного типа - в основном я этого не делал по причинам форматирования.)

Это довольно уродливо, но это сработает. Вы можете заменить любой кодcreated словарь для начала хоть? Это, вероятно, будет чище.

Вы пропускаете) в вашем коде :) dotnetN00b
Хорошо, я никогда не пробовал это :)
@SaeedAmiri: Нет, я имел в виду то, что я написал. Это должно работать просто отлично, как есть -Key Имя свойства выведено.
@ dotnetN00b: исправлено, спасибо.
Я думаю, что вы имеете в виду:Select(x => new { Key = p.Key, Value = x})

Похожие вопросы