【问题标题】:Create a Dictionary from a list with duplicates从包含重复项的列表创建字典
【发布时间】:2014-07-07 19:32:09
【问题描述】:

我的情况是我有一个List<MyObject>,而MyObject 有一个属性ID。我想从该列表中制作一本字典:

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

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

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

【问题讨论】:

  • 使用Distinct 仅选择不同的项目

标签: c# dictionary


【解决方案1】:
var myDic = MyList.ToLookup(x => x.ID)
                  .ToDictionary(x => x.Key, x => x.First());

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-13
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 2019-03-29
      • 1970-01-01
      相关资源
      最近更新 更多