2011-10-12 1 views
1

J'ai une liste (MyList) d'objets ... et je voudrais mettre à jour une propriété (Priority) de chaque élément de cette liste.Pouvons-nous mettre à jour une liste en utilisant des méthodes anonymes?

Le code ci-dessous fonctionnera-t-il pour cela?

this.MyList.All(
    delegate(ItemViewModel itemObject) 
    { 
     itemObject.Priority = priority++; 
    } 
) 

Aidez-moi s'il vous plaît. Merci d'avance!

+1

Ne pouvez-vous l'essayer et voir? – mellamokb

+2

La méthode d'extension 'All()' retournerait true/false selon que chaque élément de la liste répondait aux critères donnés dans le délégué. Puisque le délégué ne renvoie pas de booléen, cela ne devrait pas compiler. – neontapir

Répondre

2

Pourquoi ne pas simplement utiliser foreach?

foreach(ItemViewModel itemObject in MyList) 
    itemObject.Priority = priority++; 

Si vous voulez vraiment utiliser un délégué, vous pouvez utiliser ForEach():

MyList.ForEach(itemObject => 
{ 
    itemObject.Priority = priority++; 
}); 

Ce n'est pas souhaitable que puisque vous introduisez un effet secondaire avec priority++

1

Si elle est une liste, alors vous devez utiliser:

MyList.ForEach(i => i.Priority = priority++); 

ou l'équi valent:

MyList.ForEach(delegate(ItemViewModel i) { i.Priority = priority++ }); 
Questions connexes