从包含重复项的列表创建字典

Stu*_*urm 1 c# dictionary

我的情况是,我有一个List<MyObject>MyObject有一个属性ID.我想从该列表中创建一个字典:

        var myDic = MyList.ToDictionary(e => e.ID);
Run Code Online (Sandbox Code Playgroud)

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

现在我正在获取一个Exception,告诉我我的列表中有重复的键,但我不能/不想修改原始列表.有没有一种方法可以在不创建没有重复ID的新列表的情况下执行任务?

EZI*_*EZI 7

var myDic = MyList.ToLookup(x => x.ID)
                  .ToDictionary(x => x.Key, x => x.First());
Run Code Online (Sandbox Code Playgroud)


Ser*_*rvy 5

只需先按该属性对项目进行分组,然后就可以从该组中提取所需的第一个/最后一个/随机/任意值.

var dictionary = list.GroupBy(item => item.ID)
    .ToDictionary(group => group.Key, group => group.First());
Run Code Online (Sandbox Code Playgroud)