删除属性 = myValue 的列表项
本文关键字:列表 myValue 属性 删除 | 更新日期: 2024-10-31 22:30:03
我有问题。我有一个对象(车辆)列表。
List<Vehicle> vehicleList = Vehicle.GetVehiclesFromDatabase();
现在我想要这样的东西:
vehicleList.Remove(where vehicleList.Brand == "Volkswagen");
我希望我能解释我的问题是什么。
提前非常感谢!
您可以使用
List<T>.RemoveAll
:
int recordsRemoved = vehicleList.RemoveAll(v => v.Brand == "Volkswagen");
该方法采用一个Predicate<T>
(= Func<T,bool>
),这将删除谓词返回 true
的所有项目。
对您来说,这等于以下方法:
bool Filter(Vehicle vehicle)
{
return vehicle.Brand == "Volkswagen";
}
你可以使用 linq 来做到这一点,就像这样
vehicleList = vehicleList.Where(v => v.Brand != "Volkswagen").ToList();
您也可以使用全部删除来执行此操作
vehicleList.RemoveAll(v => v.Brand == "Volkswagen");
你可以这样做
var itemToRemove = vehicleList.Single(r => r.Brand == "Volkswagen");
resultList.Remove(itemToRemove);
当您不确定该项是否确实存在时,可以使用 SingleOrDefault。如果没有项,SingleOrDefault 将返回 null(Single 在找不到该项时将引发异常)。当存在重复值(两个具有相同 id 的项目)时,两者都会抛出。
var itemToRemove = vehicleList.SingleOrDefault(r => r.Brand == "Volkswagen");
if (itemToRemove != null)
resultList.Remove(itemToRemove);