How to get a distinct list from a List of objects?

后端 未结 10 1267
滥情空心
滥情空心 2020-12-24 04:59

I have a List someList.

class MyClass
{
    public int Prop1...
    public int Prop2...
    public int Prop3...
}
10条回答
  •  余生分开走
    2020-12-24 05:22

    If you would like to Distinct your list by multiple fields, You have to create an instance of IEqualityComparer interface:

    public class MyComparer : IEqualityComparer
    {
        public bool Equals(MyModel x, MyModel y)
        {
           // compare multiple fields
            return
                x.Field1 == y.Field1 &&
                x.Field2 == y.Field2 &&
                x.Field3 == y.Field3 ;
        }
    
        public int GetHashCode(MyModel obj)
        {
            return 
                obj.Field1.GetHashCode() + 
                obj.Field2.GetHashCode() + 
                obj.Field3.GetHashCode();
        }
    }
    

    Then use the comparer to distinct your list:

    var distinctedList = myList.Distinct(new MyComparer()).ToList();
    

提交回复
热议问题