2011-10-09 3 views
4

J'ai un IEnumerable et j'essaie d'appeler le paramètre "Text" dans chaque élément de l'énumérable.
que je peux faire:Définir la propriété pour chaque élément de la collection

foreach (Data d in DataEnumerable) 
{ 
    d.Text="123"; 
} 

Je peux aussi faire:

DataEnumerable.All(x => 
    { 
     x.Text = "123"; 
     return true; 
    }); 

Quelle est la meilleure pratique pour appeler la méthode définie pour chaque élément de dénombrable?

+1

Que voulez-vous dire par 'mieux practice'? Le plus efficace? Le plus lisible/maintenable? En outre, considérez [codereview.se] pour des questions sur l'amélioration du code qui fonctionne déjà. –

Répondre

10

La première méthode est meilleure. Le second est un abus de Enumerable.All. Cette méthode est destinée à être utilisée pour tester tous les éléments d'un élément Enumerable pour voir s'ils satisfont à une condition. Vous ne faites pas ça ici.

Il existe une méthode List.ForEach qui peut être utilisé pour ce type d'opération de mise à jour, mais l'équipe a décidé LINQ pas d'ajouter une méthode correspondante Enumerable. Voir le blog de Eric Lippert pour plus de détails sur pourquoi cette décision a été prise:

Questions connexes