从列表中删除项目 - C#

时间:2009-04-01 16:37:46

标签: c# linq

我有一个复杂的数据结构。简单版本如下所示:

public class Field
{

  List<FieldRow> fieldRow;

  //I want to write a delete that iterates and deletes given the key 
  //(Use Linq?)
  public void DeleteByKey(int key)
  {
    //Do Remove
  }
}

public class FieldRow
{
  public int key;
}

赞赏实施删除的任何帮助。

3 个答案:

答案 0 :(得分:7)

public class Field
{
  List<FieldRow> fieldRow;

  public void DeleteByKey(int key)
  {
    fieldRow.RemoveAll(row => key == row.key);
  }
}

public class FieldRow
{
  public int key;
}

答案 1 :(得分:3)

List<T>().RemoveAll()会做你想做的事。

你给它一个Predicate委托类型,它为每个项目执行,比如where子句:

fieldRow.RemoveAll(item => item.Key == key);

但是,您可能需要考虑将数据存储在Dictionary<int, FieldRow>中。这样您就可以通过密钥直接访问字典/地图。这样可以提高性能。

答案 2 :(得分:1)

您可以找到需要删除的字段的索引,并使用List上的RemoveAt方法。

我会在一分钟内添加一个例子。 没关系,建议在谓词中使用RemoveAll似乎是一个更好的选择: - )