I tried like following.
MyList.RemoveAll(t => t.Name == "ABS");
MyList.RemoveAll(t => t.Name == "XYZ");
MyList.RemoveAll(t => t.Name == "APO");
Instead how can I do something like:
MyList.RemoveAll(t => t.Name == "ABS" || t => t.Name == "XYZ" ||t => t.Name == "APO");
Remove Multiple elements from list by index range using del. Suppose we want to remove multiple elements from a list by index range, then we can use del keyword i.e. It will delete the elements in list from index1 to index2 – 1.
Multiple elements can be deleted from a list in Python, based on the knowledge we have about the data. Like, we just know the values to be deleted or also know the indexes of those values.
For removing multiple elements from a list by index range we can use del operator.
You only need one lambda expression - the ||
goes within that:
MyList.RemoveAll(t => t.Name == "ABS" || t.Name == "XYZ" || t.Name == "APO");
In other words, "Given a t
, I want to remove the element if t.Name
is ABS, or if t.Name
is XYZ, or if t.Name
is APO."
There's only one "given a t
" in there, which is what the t =>
part means, effectively.
A more extnsible approach would be to have a List for what to remove then
List<T> toRemove = ...
MyList.RemoveAll(t => toRemove.Contains(t.Name));
where T is a string in your example
If it's not required at any time that there are multiple items in the list, you should consider using a HashSet
instead of List
or
var nameToRemove = new[]{"ABS", "XYZ", "APO"};
MyList.RemoveAll(t => nameToRemove.Contains(t.Name))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With