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

本文关键字:列表 项目 删除列 删除 条件下 RemoveAll | 更新日期: 2023-09-27 18:13:20

我试着这样做。

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

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

您只需要一个 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 =>部分的意思,有效地

一种更可扩展的方法是使用List来列出要删除的内容

List<T> toRemove = ...
MyList.RemoveAll(t =>  toRemove.Contains(t.Name));

其中T是一个字符串

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

如果列表中不需要有多个项目,则应考虑使用HashSet而不是List