一行语句删除包含某个word/string的数组中的元素

Remove elements in an array containing a certain word/string in a single line of statement

我有一个数组:

 List<String> TagArray = new List<string>(TagString.Split(','));

我想删除数组中的某些元素;说 - 如果值包含字母 'AAA'.

C#中是否有一行语句就可以达到我们想要的结果?

试试这个:

TagArray.RemoveAll(item => item.Contains("AAA"));

RemoveAll 将从您定义的谓词中删除所有 return 为真的项目。您可以多次执行此操作,也可以 ||一堆包含在一个 RemoveAll 中。

您可以在这里使用 LINQ。例如

List<String> TagArray = TagString.Split(',')
    .Where(tag => tab.IndexOf("AAA") < 0)
    .ToList();

记得添加 System.Linq 命名空间。

希望对您有所帮助!!

 static void Main(string[] args)
    {

        string TagString = "WAAAA,APPLE";

        List<String> TagArray = new List<string>(TagString.ToUpper().Split(',')).Where(x => !x.Contains("AAA")).ToList();

    }

1 行有效

 List<String> TagArray = new List<string>(TagString.ToUpper().Split(',')).Where(x => !x.Contains("AAA")).ToList();

List 中有一个可用的方法:RemoveAll(Predicate<T>)

var list = new List<string> {"AAABBBCCC", "AABBCC", "ABC", "CCAAACC"};
list.RemoveAll(s => s.Contains("AAA")); // Removes the first and the last element

RemoveAll() "iterates" 遍历列表并为您提供每个元素。 s 表示列表中的一个元素,=> 之后的代码是一个条件。当条件为true时,元素被移除。条件不必使用s变量,它可以是returns bool值的任意块。

所以你也可以这么写:

list.RemoveAll(s =>
{
    return a == 5;
});