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

Neo*_*Neo 5 c# linq linq-to-sql

我试过跟随.

MyList.RemoveAll(t => t.Name == "ABS");
MyList.RemoveAll(t => t.Name == "XYZ");
MyList.RemoveAll(t => t.Name == "APO");
Run Code Online (Sandbox Code Playgroud)

相反,我该怎么做:

MyList.RemoveAll(t => t.Name == "ABS" || t => t.Name == "XYZ" ||t => t.Name == "APO");
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 18

你只需要一个 lambda表达式 - ||其中包括:

MyList.RemoveAll(t => t.Name == "ABS" || t.Name == "XYZ" || t.Name == "APO");
Run Code Online (Sandbox Code Playgroud)

换句话说,"给定a t,我想删除元素,如果t.Name是ABS,或者如果t.Name是XYZ,或者是否t.Name是APO."

那里只有一个"给定的t",这t =>部分就是有效的.


Mik*_*keW 13

一种更加可靠的方法是获得一个列表,然后删除什么

List<T> toRemove = ...
MyList.RemoveAll(t =>  toRemove.Contains(t.Name));
Run Code Online (Sandbox Code Playgroud)

其中T是示例中的字符串


Rap*_*aus 5

要么

var nameToRemove = new[]{"ABS", "XYZ", "APO"};
MyList.RemoveAll(t => nameToRemove.Contains(t.Name))
Run Code Online (Sandbox Code Playgroud)

  • 你真的想在每次迭代中构造一个新数组吗? (3认同)