2009-12-16 6 views
0

J'ai ce codeLINQ: faire sélectionner et mettre à jour

foreach (MyType o in myList) 
{ 
    var res = from p in myOriginalList 
       where p.PropertyA == o.PropertyA && p.PropertyB == o.PropertyB 
       select p; 

    //Need to update myOriginalList 

    //.... 
} 

Je voudrais dans le myOriginalList faire une mise à jour pour chaque enregistrement trouvé par le sélectionner Linq. Comment puis-je faire ceci ?

Merci,

+0

(répondu à un commentaire) –

Répondre

1
foreach(var item in res) 
{ 
    item.prop = updatedvalue; 
} 

Voulez-vous dire ceci?

1

Il n'y a pas d'extension ForEach intégré - donc juste boucle et mise à jour:

foreach(var item in res) { 
    item.SomeProp = someValue; 
} 

Notez également que vous pouvez utiliser SelectMany pour ce faire dans une requête:

var res = from MyType o in myList 
      from p in myOriginalList 
       where p.PropertyA == o.PropertyA && p.PropertyB == o.PropertyB 
       select p; 
+0

Pour être nitpicky, il existe une extension ForEach, mais pas directement sur l'interface IEnumerable mais sur la liste générique (raisons philosophiques: http://stackoverflow.com/questions/800151/why-is-foreach-on-ilistt-and- non-sur-ienumerablet/1296774 # 1296774) –

+0

Oh, je suis très au courant d'eux ;-p Mais acclame. –

+0

dans la première partie, vous mettez à jour le résultat de la requête pas "myOriginalList" droit? c'est une mise à jour de l'original basé sur le résultat de res j'ai besoin –

Questions connexes