2010-08-02 4 views
0

Je suis sûr que c'est une question triviale mais je n'ai pas pu trouver un bon exemple. Supposons que tout ce que vous voulez faire est de changer un attribut pour tous les objets d'une liste. Je voudrais dire quelque chose comme:Transformation simple avec Linq

List<SomeType> list = ...; 

list.Select(x => x { x.Name = "Foo" }); 

Notez l'absence du "nouveau" mot-clé. Je ne veux pas recréer des objets qui existent déjà, il suffit d'exécuter une ligne de code (dans ce cas une simple affectation) sur chaque élément de la liste.

Est-ce possible dans linq d'une manière élégante?

Merci d'avance!

+0

Bien que le travail des solutions proposées, Linq est destiné aux requêtes. N'en abusez pas. –

+0

@Doc Brown: Linq n'est pas seulement destiné aux requêtes! –

+0

@Christopher Edwards: Je suis sûr que vous savez pour ce que l'abréviation LINQ est. Et si vous n'êtes pas convaincu, jetez un œil au lien vers l'article d'Eric Lippert posté par spender. –

Répondre

2

Très facile. MSDN ForEach est en fait juste une méthode de la classe List, mais elle vous permet d'utiliser des expressions Lambda.

list.Foreach(x => x.Name = "Foo" ); 
+0

Certainement pas une extension. Juste une méthode standard de liste de T – spender