从具有重复项的列表创建字典

本文关键字:列表 创建 字典 | 更新日期: 2023-09-27 18:12:03

我的情况是,我有一个List<MyObject>MyObject有一个属性ID。我想用这个列表制作一个字典:

        var myDic = MyList.ToDictionary(e => e.ID);

问题是有时我有一些重复的ID。在这种情况下,我希望将第一个项目存储到字典中,并忽略其余的项目,并在可能的情况下对跳过的项目进行某种通知。

现在我得到一个异常告诉我,我有重复的键在我的列表,但我不能/不想修改原始列表。有没有一种方法可以在不创建没有重复id的新列表的情况下执行任务?

从具有重复项的列表创建字典

var myDic = MyList.ToLookup(x => x.ID)
                  .ToDictionary(x => x.Key, x => x.First());

先按属性分组,然后你可以从组中取出第一个/最后一个/随机/任何你想要的值。

var dictionary = list.GroupBy(item => item.ID)
    .ToDictionary(group => group.Key, group => group.First());