根据子字符串匹配从列表
本文关键字:删除 列表 字符 字符串 串匹配 | 更新日期: 2023-09-27 18:25:21
sampleList.RemoveAll(a=>a.reference.Contains("123"));
此行代码不会从列表中删除任何项,而
sampleList.RemoveAll(a=>!a.reference.Contains("123"));
删除所有项目。
我目前已经求助于制作另一个列表并经历一个 for 循环并将内容添加到第二个列表中,但我真的不喜欢这种方法。
有没有更清洁的方法来实现我正在尝试的?
第二个示例"删除所有项目"而第一个示例不删除任何项目,这一事实使我得出结论,列表中项目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(...)
的返回值以检查已删除正确数量的元素。