Linq-запрос для получения дублирующего ключа один раз вместе с несколькими значениями из словаря - PullRequest
0 голосов
/ 29 июня 2011

У меня есть следующий словарь:

Dictionary<int, string> selectedDrivers = new Dictionary<int, string>()
{
    { 1, "Michael Schumacher" },
    { 2, "Michael Schumacher" },
    { 3, "Jensen Button" }
};

Я пытаюсь выполнить запрос linq, который найдет дубликаты, получит имя только один раз вместе с позициями, которые занимает этот дубликат. Так, например, приведенное выше приведет к "Michael Schumacher" 1 2. Я хотел бы, чтобы результат вошел в Dictionary<string, List<int>>.

Будучи возбужденным быстро, этот маленький самородок, который я написал, кажется, движется в правильном направлении, за исключением того, что у меня есть Михаэль Шумахер дважды. И это еще не в Dictionary<string, List<int>>

var a = selectedDrivers.GroupBy(a => a.Value).
        Where(b => b.Count() > 1);

1 Ответ

3 голосов
/ 29 июня 2011
var a = selectedDrivers.GroupBy(a=>a.Value)
            .Where(g=>g.Count() > 1)
            .ToDictionary(g => g.Key, g => g.Select(a=>a.Key).ToList());
...