sampleList.RemoveAll(a=>a.reference.Contains("123"));
这行代码不会删除列表中的任何项目,而
sampleList.RemoveAll(a=>!a.reference.Contains("123"));
删除所有项目。
我目前使用另一个列表并通过for循环并将内容添加到第二个列表中,但我真的不喜欢这种方法。
有没有更清洁的方法来实现我的目标?
答案 0 :(得分:4)
第二个示例“删除所有项目”而第一个删除所有项目的事实使我得出结论,列表中项目的reference
属性都不包含字符串“123”。
Elementry亲爱的沃森;)
答案 1 :(得分:0)
我猜你的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(...)
的返回值以检查已删除的元素数量是否正确。