如何在条件下使用RemoveAll删除列表中的多个项目?

时间:2014-07-16 12:21:18

标签: c# linq linq-to-sql

我试过跟随。

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");

4 个答案:

答案 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