列表(T)RemoveAll()无法正常工作......?

bul*_*ous 2 c# asp.net webforms

假设我有一个User对象列表,其中包含两个属性... ID和Name

List<User> lst = List<User>();
Run Code Online (Sandbox Code Playgroud)

我填写了一堆用户.好的,现在我想使用RemoveAll()和此函数修剪我的列表.

private Boolean IsExisting(int id) {
//blah blah
return true;
//blah blah
return false;
}
Run Code Online (Sandbox Code Playgroud)

所以我用这句话:

gdvFoo.DataSource = lst.RemoveAll(t => IsExisting(t.ID));
Run Code Online (Sandbox Code Playgroud)

我的理解是,每当IsExisting返回true时,该元素应该从lst中删除,但是会发生什么,奇怪的是,它返回一个整数?,而不是截断的列表,我收到以下错误消息:

数据源是无效类型.它必须是IListSource,IEnumerable或IDataSource.>

Bry*_*tts 6

List.RemoveAll方法

该方法从您调用它的列表中删除所有匹配的实例.这会修改现有列表,而不是返回新列表.

返回值是删除的行数.


Spe*_*ETC 5

RemoveAll()返回删除的元素数.你需要这样做:

lst.RemoveAll(t => IsExisting(t.ID)); 
gdvFoo.DataSource = lst;
Run Code Online (Sandbox Code Playgroud)