2010-12-01 22 views
3

J'ai List<T> data et Predicate<T> condition.moyen le plus fiable pour nettoyer Liste <T> selon prédicats <T>

Quelle façon dois-je utiliser pour effacer data selon le résultat condition?

  • Option 1:

    var del = data.Where(i => condition); 
    data.RemoveAll(i => del.Contains(i)); 
    
  • Option 2:

    var del = data.Where(i => condition); 
    for (int i = 0; i < del.Count; i++) 
        data.Remove(del[i]); 
    
  • Option 3:

    var del = data.Where(i => condition); 
    foreach (var i in del) 
        data.Remove(i); 
    
  • Option 4:

    data = data.Where(i => !condition); 
    
  • Autre?

+0

Syntaxe surlignage est très bien lorsque vous n'utilisez pas les listes où les éléments sont * juste * code. –

+0

@Jon: Merci! Sachez maintenant. – abatishchev

Répondre

10

Que diriez-vous:

data.RemoveAll(condition); 

Notez que votre quatrième option ne fonctionnera pas sans un appel à ToList().

+0

Comment pourrais-je être si bête de perdre cette option! :) – abatishchev