mettre à jour plusieurs éléments à la fois LINQ
Est-il possible de propriété sur chaque élément de la Liste à l'aide de LINQ.
par exemple:
var users = from u in context.Users where u.Name == "George" select u;
foreach (User us in users){
us.MyProp = false;
}
Est-il possible de le rendre plus propre ?
Non, ni LINQ ni LINQ to SQL, basés sur les capacités de mise à jour.
Comment définiriez-vous nettoyeur? Plus courte? Moins d'utilisation de constructions, y compris indendtation? Moins de lignes de code dans votre méthode?
Comment définiriez-vous nettoyeur? Plus courte? Moins d'utilisation de constructions, y compris indendtation? Moins de lignes de code dans votre méthode?
OriginalL'auteur gruber | 2011-03-02
Vous devez vous connecter pour publier un commentaire.
Ou vous pouvez le convertir en ToList() et utiliser ForEach méthode.
de mettre à jour plusieurs propriétés
Ou comme ce
Blais: blogs.msdn.com/b/ericlippert/archive/2009/05/18/... c'est une belle lecture
J'ai eu cet article à l'esprit quand j'ai écrit mon commentaire. Une très belle lecture en effet. 🙂
Il y a une erreur dans votre ForEach déclaration.
.ForEach({ u =>
devrait être.ForEach( u => {
merci 🙂 pour le mettre à Jour
OriginalL'auteur Anuraj
Vous pouvez créer votre propre ForEach méthode d'extension:
Puis votre code peut être simplifié à:
EDIT: Vous pouvez aussi le rendement de retour de chaque élément après l'appel à l'action() (no pun intended) à partir de l'exécution différée intacte.
context.Users.Where(x => x.Name == "George").ForEach(u => u.MyProp = false);
IEnumerable<T> a déjà un Pourchaque et Pourtout
ce n'est pas correct.
List<T>
a unForEach
méthode, maisIEnumerable<T>
ne le fait pas.IEnumerable n'est pas le cas, une Liste<T> a ForEach bien .ToList pourrait être utilisé. Aussi la seule fois où je l'ai vu avec un ForAll est quand il est fait en parallèle
Pouvez-vous donner une source pour votre commentaire? Je viens de vérifier le msdn.microsoft.com/en-us/library/9eekhta0.aspx et ne semblent pas trouver une telle méthode. Nous avons en effet explicitement créé une telle extension dans notre cadre!
OriginalL'auteur Johann Blais
Qu'est-ce que nettoyant est tout à fait subjective. Personnellement, je trouve cette approche très dur à battre pour plus de clarté et de simplicité:
OriginalL'auteur Fredrik Mörk
Si vous êtes intéressé à en mémoire de mise à jour, qui est la base de données n'est pas à jour, alors vous pourriez utiliser
raté le .ToList(). J'ai mis à jour mon code pour inclure la requête de la partie donc, il est clair
Je pense que vous devez supprimer le var, les utilisateurs de la déclaration de trop. Sinon, il ne compile pas.
OriginalL'auteur Shiv Kumar
Comment sur:
bien, en théorie, il peut être fait, mais pas comme dans cette réponse (et pas d'une façon qui aurait vraiment de sens).
Si cela fonctionne ou pas? 😀
OriginalL'auteur Christian
L'air sale, mais si demandé (par le biais de sélection), je vais le faire de cette façon
si vous souhaitez utiliser un autre C# fonction, vous pouvez également utiliser linq fonctions et de travailler sur IEnumerable type de listes.
Code ci-dessus devient IEnumerable en raison de la
.ToList()
avant la.Select()
OriginalL'auteur ken lacoste