关于c#:如何通过对象的属性从自定义对象列表中删除重复项

How to remove duplicates from a list of custom objects, by a property of the object

本问题已经有最佳答案,请猛点这里访问。

我要基于对象的属性删除重复项:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class MyType
{
    public string _prop1;
    public string _prop2;

    public LocationsClass(string prop1, string prop2)
    {
        _prop1= prop1;
        _prop2= prop2;
    }
}

...

List<MyType> myList;

所以基本上我想从mylist中删除所有mytype对象,在prop1中使用相同的值。有什么方法可以做到这一点吗,可能是用LINQ?


1
var distinctItems = myList.GroupBy(x => x.prop1).Select(y => y.First());

您还可以使用morelinq distinctby:

1
distinctItems = myList.DistinctBy(x => x.prop1).ToList();

或具有多个属性:

1
distinctItems = myList.DistinctBy(x=> new { x.prop1, x.prop2}).ToList();