c# list removeall predicate