c# - 如何根据属性从列表中删除对象
问题描述
如何从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 帖子确实回答了我的问题,因为我不需要修改现有列表。如帖子中所述,根据我的要求创建一个新列表就足够了。:)
解决方案
我认为这就是您想要的,它会按 ID 过滤您的汽车。
cars = cars.GroupBy(c => c.Id).Select(c => c.First()).ToList();
推荐阅读
- gmail-api - googleapiclient.errors.HttpError:请求 https://www.googleapis.com/gmail/v1/users/me/watch 时出现 HttpError 500 '后端错误'
- ajax - Ember JS 向 API 发出 GET 请求
- macos - 如何使用 NSFilePromiseProvider 写入粘贴板
- javascript - 在用户输入时“立即”比较日期值
- statistics - SARIMAX ValueError:xnames 和 params 的长度不同
- php - 删除基于 1 个标记的 XML 行块,保留其余部分
- android - ios和android的react native推送通知
- spring-cloud - 多个@SqsListeners的Spring Cloud AWS SQS SimpleMessageListenerContainerFactory配置
- dictionary - 为什么地图中没有键
- c# - 可以提取基类中断二进制序列化