Using LINQ to find duplicates across multiple properties

前端 未结 3 1190
滥情空心
滥情空心 2020-12-31 00:22

Given a class with the following definition:

public class MyTestClass
{
    public int ValueA { get; set; }
    public int ValueB { get; set; }
}
         


        
3条回答
  •  不知归路
    2020-12-31 01:13

    You could just use Jon Skeet's DistinctBy and Except together to find duplicates. See this Response for his explanation of DistinctBy.

    MyTestClass[] items = new MyTestClass[3];
    items[0] = new MyTestClass { ValueA = 1, ValueB = 1 };
    items[1] = new MyTestClass { ValueA = 0, ValueB = 1 };
    items[2] = new MyTestClass { ValueA = 1, ValueB = 1 };
    
    MyTestClass [] distinctItems = items.DistinctBy(p => new {p.ValueA, p.ValueB}).ToArray();
    MyTestClass [] duplicates = items.Except(distinctItems).ToArray();
    

    It will only return one item and not both duplicates however.

提交回复
热议问题