简体   繁体   English

获取重复对象的列表,包括所有出现的C#

[英]Get a list of duplicated objects, including all occurrences C#

I have a class MyClass 我有一堂MyClass

public class MyClass
{
    public int ID { set; get; }
    public string ITEM1 { set; get; }
    public string ITEM2 { set; get; }
}

And a list 和清单

List<MyClass> listMyClass = new List<MyClass>();

with 3 objects 3个物件

  {1, "APPLE", "LIME"}
  {1, "LIME", "APPLE"}
  {2, "ORANGE", "LEMON"}

I would like to exclude non-duplicated objects BUT if there are 2 duplicated object, I want to list them all. 我想排除非重复的对象,但是如果有2个重复的对象,我想将它们全部列出。 So the result list I would like to have 所以我想要的结果列表

  {1, "APPLE", "LIME"}
  {1, "LIME", "APPLE"}

I try 我尝试

  var dupes = .GroupBy(g => g.ID).SelectMany(grp => grp.Skip(1)).ToList();

This only gives me 这只会给我

  {1, "APPLE", "LIME"}

Pleas ignore the reason why I have objects with same ID but have different contents. 请不要理会我拥有相同ID但内容不同的对象的原因。 How could I get a full list of duplicated objects? 如何获得重复对象的完整列表?

var dupes = listMyClass.GroupBy(i => i.ID).Where(i => i.Count() > 1).SelectMany(i => i).ToList();

这个怎么样?

var dupes = listMyClass.GroupBy(g => g.ID).SelectMany(grp => grp.Count() <= 1 ? new MyClass[] { } : grp.ToArray()).ToList();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM