如何通过对象属性从自定义对象列表中删除重复项

3

我希望根据对象的属性删除重复项:

public class MyType
{
    public string _prop1;
    public string _prop2;

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

...

List<MyType> myList;

基本上,我想从myList中删除所有具有相同值的_prop1的MyType对象。 有没有一种方法可以使用LINQ来实现这一点?


Linq 只会为您获取一个筛选后的列表,它不会修改您的原始 myList 对象 - 只是确保您的期望是正确的。 - Carbine
2
https://dev59.com/JHRB5IYBdhLWcg3w2613, https://dev59.com/Umgt5IYBdhLWcg3wygeb, https://dev59.com/u3E85IYBdhLWcg3w8IQ4 - CodeCaster
2个回答

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

对于较小的集合,使用GroupBy是可以的。但在其他情况下,应该谨慎使用它,因为它会导致时间复杂度,并可能影响性能。 - Sunny

2

您还可以使用morelinqDistinctBy方法:

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

或具有多个属性:
distinctItems = myList.DistinctBy(x=> new { x.prop1, x.prop2}).ToList();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接