【问题标题】:Remove list items where property = myValue删除属性 = myValue 的列表项
【发布时间】:2016-04-21 09:36:31
【问题描述】:

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

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

现在我想要这样的东西:

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

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

非常感谢!

【问题讨论】:

  • c# remove item from list的可能重复
  • 试试这样的:List results = vehicleList.Where(x => vehicleList.Brand != "Volkswagen").ToList();
  • 使用 vehicleList.RemoveAll(item =&gt; item.Brand == "Volkswagen"); 删除所有带有 Volkswagen 品牌的商品。要删除单个项目,您需要传递该项目,或者知道它的索引。

标签: c# .net list


【解决方案1】:

你可以使用List&lt;T&gt;.RemoveAll:

int recordsRemoved = vehicleList.RemoveAll(v => v.Brand == "Volkswagen");

该方法采用Predicate&lt;T&gt; (= Func&lt;T,bool&gt;),它将删除谓词返回true 的所有项目。

对你来说,这等于以下方法:

bool Filter(Vehicle vehicle)
{
   return vehicle.Brand == "Volkswagen";
}

【讨论】:

  • 这将删除所有品牌大众汽车,他们想要相反
  • 非常感谢!这正是我需要的:)
【解决方案2】:

您可以使用 linq 来执行此操作,就像这样

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

您也可以使用 RemoveAll 来做到这一点

vehicleList.RemoveAll(v => v.Brand == "Volkswagen");

【讨论】:

    【解决方案3】:

    你可以这样做

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多