删除属性 = myValue 的列表项

本文关键字:列表 myValue 属性 删除 | 更新日期: 2024-10-31 22:30:03

我有问题。我有一个对象(车辆)列表。

List<Vehicle> vehicleList = Vehicle.GetVehiclesFromDatabase();

现在我想要这样的东西:

vehicleList.Remove(where vehicleList.Brand == "Volkswagen");

我希望我能解释我的问题是什么。

提前非常感谢!

删除属性 = myValue 的列表项

您可以使用

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);