删除property = myValue的列表项

时间:2016-04-21 09:36:32

标签: c# .net list

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

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

现在我想要这样的事情:

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

我希望我能解释一下我的问题所在。

非常感谢提前!

3 个答案:

答案 0 :(得分:3)

您可以使用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";
}

答案 1 :(得分:2)

您可以使用linq执行此操作,如此

vehicleList = vehicleList.Where(v => v.Brand != "Volkswagen").ToList();

您也可以使用RemoveAll

执行此操作
vehicleList.RemoveAll(v => v.Brand == "Volkswagen");

答案 2 :(得分:1)

你可以这样做

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