我试过跟随。
MyList.RemoveAll(t => t.Name == "ABS");
MyList.RemoveAll(t => t.Name == "XYZ");
MyList.RemoveAll(t => t.Name == "APO");
相反,我该怎样做:
MyList.RemoveAll(t => t.Name == "ABS" || t => t.Name == "XYZ" ||t => t.Name == "APO");
答案 0 :(得分:17)
你只需要一个 lambda表达式 - ||
就在其中:
MyList.RemoveAll(t => t.Name == "ABS" || t.Name == "XYZ" || t.Name == "APO");
换句话说,“给定t
,如果t.Name
为ABS,或t.Name
为XYZ,或t.Name
为APO,我想删除该元素。“
只有一个“给定t
”,这是t =>
部分的有效含义。
答案 1 :(得分:9)
更加可靠的方法是拥有一个列表,以便删除
List<T> toRemove = ...
MyList.RemoveAll(t => toRemove.Contains(t.Name));
其中T是示例中的字符串
答案 2 :(得分:5)
或
var nameToRemove = new[]{"ABS", "XYZ", "APO"};
MyList.RemoveAll(t => nameToRemove.Contains(t.Name))
答案 3 :(得分:0)
如果列表中有多个项目,则无需随时使用HashSet
代替List