morelinq 由多个属性区分

Any*_*ope 2 c# linq distinct-values morelinq visual-studio-2013

我一直在使用 morelinq 创建一个不同的对象列表。我的对象有大约 20 个属性,在最终列表中没有一个是唯一的。然而,两个属性一起使用可以揭示独特的对象:

父 ID | 儿童 ID

  • 1 | 1
  • 1 | 2
  • 2 | 1
  • 2 | 2
  • 2 | 3

我看到这个问题并认为这是同样的问题所以我下载了morelinq并尝试使用:

list = list.DistinctBy(c => new { c.id, c.parentid }).ToList();
Run Code Online (Sandbox Code Playgroud)

然而,这会导致在 EITHER 属性上有一个不同的列表,而不是两者(所以我只会看到每个父母一个孩子)

使用 morelinq 实现这一目标的正确方法是什么?

小智 5

    list = list
           .GroupBy(a=> new { a.id, a.parentid})
           .Select(a=> a.first());
Run Code Online (Sandbox Code Playgroud)