noo*_*Dev 3 c# list object remove-if
我有一个课程如下
class MyClass
{
public string id { get; set; }
public string data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有一系列我需要删除的ID:
List<myClass> myObjArray = new List<myClass>;
myClass myObj1 = new myClass { id = "1", data = "aaa"};
myClass myObj2 = new myClass { id = "2", data = "bbb"};
myClass myObj3 = new myClass { id = "3", data = "ccc"};
myClass myObj4 = new myClass { id = "4", data = "ddd"};
myObjArray.Add(myObj1);
myObjArray.Add(myObj2);
myObjArray.Add(myObj3);
myObjArray.Add(myObj4);
string [] idToBeRemove = {"1", "3"};
Run Code Online (Sandbox Code Playgroud)
是否有任何方法可以删除myObjArray中的myObj,其中id在idToBeRemove字符串中?
List<T>有一种方法RemoveAll可以满足你的需要.与执行类似操作不同Where(...).ToList(),它将修改现有列表而不是创建新列表.
myObjArray.RemoveAll(item => idToBeRemove.Contains(item.id));
Run Code Online (Sandbox Code Playgroud)
请注意,随着要删除的项目数组的增长,您需要转移到更高性能的项目,例如a HashSet<T>,尽管当前计数为2,但这并不是迫切需要.
@Richardissimo也在你的问题的评论中提出了一个很好的建议,即主列表本身何时增长,这Dictionary<K, V>可能是有用的.同样,不是立即需要一个小列表,但随着它的增长和性能是一个问题需要记住.
| 归档时间: |
|
| 查看次数: |
475 次 |
| 最近记录: |