首页 文章

从列表中选择基于多个唯一字段

提问于
浏览
2

我目前有一个列表,其中包含具有字段的项目:“名称,描述,来源, Headers ,......” . 我想从这里转储一个列表,但是根据两个键,即名称和描述,它们是唯一的 . 基本上,我不希望列表中的项目具有相同的名称和相同的描述,但如果它们具有不同的名称和相同的描述,那么它没关系 .

我抬头看着那个用

list.select(x => x.Name).Distinct()

会给我一个具有不同名称的列表,但堆叠它们会违反其中一个唯一键不同,而且相同 .

我也看了一下散列集,但我对它是如何工作完全感到困惑 .

如果有人可以提供帮助,我们将不胜感激 .

3 回答

  • 0

    如果您只是寻找所有不同的名称/描述组合:

    list.Select(x => new {x.Name, x.Description}).Distinct();
    
  • 2

    您可以使用从HERE获取的以下示例:

    IEnumerable<Person> filteredList = originalList
      .GroupBy(person => person.Name)
      .Select(group => group.First());
    

    或者使用DistinctBy来自MoreLINQ NuGet可用HERE

  • 0
    var uniqueData = list.Select(x => new
                {
                    UniqueKey = x.Name + " " + x.Description,
                    Data = x,
                }).GroupBy(x => x.UniqueKey)
                    .Select(g => g.First().Data)
                    .ToList();
    

    您应该使用一些唯一/特殊字符/字符串而不是" "来确保UniqueKey真的是唯一的 .

相关问题