首页 > 解决方案 > 如何根据属性从列表中删除对象

问题描述

如何从List<Object>基于重复 ID 的对象中删除对象?例如:

public class Car
{
    public int ID { get; set; }
    public string Color { get; set; }
    public string Year { get; set }
}

Car car1 = new Car()
{
  ID = 123,
  Color = "green",
  Year = "2010"
};

Car car2 = new Car()
{
  ID = 123,
  Color = "blue",
  Year = "2012"
};

Car car3 = new Car()
{
  ID = 153,
  Color = "black",
  Year = "2020"
};

var cars = new List<Car>();
cars.Add(car1);
cars.Add(car2);
cars.Add(car3);

如果有重复的 ID,我需要删除除第一个之外的所有ID 。在上面的示例中,我只需要删除car2. 也许有一个好LINQ方法可以做到这一点?


推荐的 SO 帖子确实回答了我的问题,因为我不需要修改现有列表。如帖子中所述,根据我的要求创建一个新列表就足够了。:)

标签: c#listlinq

解决方案


我认为这就是您想要的,它会按 ID 过滤您的汽车。

cars = cars.GroupBy(c => c.Id).Select(c => c.First()).ToList();


推荐阅读