I tried like following.
MyList.RemoveAll(t => t.Name == \"ABS\");
MyList.RemoveAll(t => t.Name == \"XYZ\");
MyList.RemoveAll(t => t.Name == \"APO\")
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
or
var nameToRemove = new[]{"ABS", "XYZ", "APO"};
MyList.RemoveAll(t => nameToRemove.Contains(t.Name))
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