sélectionnez tous par la clause where dans linq
Voici mon code ,
Name obj = new Name();
obj = DB.Names.Where(x => x.age == 20 ).SingleOrDefault();
Ce que je veux faire est de mettre à jour tous les Name
avec age=20
,
obj.Name = " Mr " + obj.Name ;
DB.SubmitChanges();
Mais .SingleOrDefault()
peut retourner qu'une seule valeur , je veux obtenir tous avec age=20
.
OriginalL'auteur zey | 2013-04-23
Vous devez vous connecter pour publier un commentaire.
Where()
déjà renvoie tous les objets correspondants. Vous n'avez pas besoin d'ajouter quoi que ce soit d'autre. Essayez ceci:OriginalL'auteur JLRishe
DB.Names.Where(x => x.age == 20 )
retourne unIEnumerable<Name>
que vous pouvez parcourir avecforeach
de modifier chaque entrée.Bien sûr, donne @JLRishe la accepté de répondre juste parce qu'il suppose que vous ne pouvez pas mettre en œuvre un
foreach
boucle. 😉🙂 , mais est-il plus parfait ?
OriginalL'auteur dahlbyk
Pourquoi vous utilisez
SingleOrDefault
? Essayez ceci:OriginalL'auteur Hossein Narimani Rad
Where
sera de retour la liste condition de correspondanceOriginalL'auteur Satpal
Oui, Donc, supprimer
SingleOrDefault()
, vous obtiendrez tous les enregistrements correspondent à la conditionEt aussi, vous pouvez alors essayer d'utiliser
Foreach
de mettre à jour chaque et chaque article que vous filtrées à partir de l'initiale des noms.essayer de code ci-dessous :
Malheureusement, cela ne compile pas car IEnumerable<T> n'a pas de
Foreach()
méthode.merci
Il peut être fait avec
DB.Names.Where(x => x.age == 20 ).ToList().ForEach(n=>n.Name = " Mr " + n.Name);
(note de l'ToList()
de capitalisation et de "Chaque"), mais la superstar Eric Lippert n'est pas un fan de ce style.Merci de remarquer, mise à jour de ma réponse.
OriginalL'auteur Damith