根据子字符串匹配从列表

本文关键字:删除 列表 字符 字符串 串匹配 | 更新日期: 2023-09-27 18:25:21

sampleList.RemoveAll(a=>a.reference.Contains("123"));

此行代码不会从列表中删除任何项,而

sampleList.RemoveAll(a=>!a.reference.Contains("123"));

删除所有项目。

我目前已经求助于制作另一个列表并经历一个 for 循环并将内容添加到第二个列表中,但我真的不喜欢这种方法。

有没有更清洁的方法来实现我正在尝试的?

根据子字符串匹配从列表<T中删除>

第二个示例"删除所有项目"而第一个示例不删除任何项目,这一事实使我得出结论,列表中项目reference属性都不包含字符串"123"。

元素我亲爱的沃森;)

我猜你的sampleList不包含包含"123"的元素。事实证明,第一次尝试不删除任何内容,第二次尝试(与第一次相反(删除所有内容。

这是我编写的示例控制台应用程序,用于测试我认为您要实现的目标,并且它有效:

static void Main(string[] args)
{
    List<string> sampleList = new List<string>(new string[]
    {
        "Some String", "Some Other String", "Hello World", "123456789", "987654123"
    });
    Console.WriteLine("Items:");
    foreach (string item in sampleList)
    {
        Console.WriteLine(item);
    }
    Console.WriteLine("'nRemoving items containing '"123'"...");
    int itemsRemoved = sampleList.RemoveAll(str => str.Contains("123"));
    Console.WriteLine("Removed {0} items.", itemsRemoved);
    Console.WriteLine("'nItems:");
    foreach (string item in sampleList)
    {
        Console.WriteLine(item);
    }
    Console.ReadKey();
}

首先检查集合中项的值。确保值包含它们应包含的内容后,请检查 RemoveAll(...) 的返回值以检查已删除正确数量的元素。