有条件地从列表中删除N个项目

Sla*_*avo 2 .net

当我进入我需要从列表中删除项目的场景时,我正在编写一些ASP.NET控件,只有当它们匹配某个条件时才会这样.

RemoveAll泛型List类的方法做得很好,但删除了与谓词指定的条件匹配的所有项.

如果我只想删除指定条件的特定数量的项目怎么办?您认为最好的方法是什么?

Ser*_*gel 8

如果要同时指定要删除的项目数限制以及选择要删除的项目的条件,可以使用以下方法:

int limit = 30; // Suppose you want to remove 30 items at most
list.RemoveAll(item => ShouldIRemoveThis(item) && limit-- > 0);
Run Code Online (Sandbox Code Playgroud)


Wil*_*lka 5

@buyutec

代替

list.RemoveAll(item => ShouldIRemoveThis(item));
Run Code Online (Sandbox Code Playgroud)

您可以使用:

list.RemoveAll(ShouldIRemoveThis);
Run Code Online (Sandbox Code Playgroud)

lambda与方法具有相同的签名,因此它们是等效的,因此您可以直接传递该方法.