Linq查询一次从字典中获得一个重复的键和多个值

本文关键字:一个 一次 查询 字典 Linq | 更新日期: 2023-09-27 18:00:37

我有以下字典:

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);

Linq查询一次从字典中获得一个重复的键和多个值

var a = selectedDrivers.GroupBy(a=>a.Value)
            .Where(g=>g.Count() > 1)
            .ToDictionary(g => g.Key, g => g.Select(a=>a.Key).ToList());