Я бы предположил, что ваш 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(...)
, чтобы убедиться, что правильное количество элементов было удалено.