我有一个复杂的数据结构。简单版本如下所示:
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;
}
赞赏实施删除的任何帮助。
答案 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似乎是一个更好的选择: - )