La requête et la mise à jour d'une propriété dans une collection à l'aide de LINQ
Ce qui est le plus succinct/moyen simple de mettre à jour une propriété unique d'un élément spécifique au sein d'une collection à l'aide de LINQ?
Par exemple si j'ai une Liste des éléments suivants:
public class Ticket
{
public string Name { get; set; }
public string Code { get; set; }
public bool Selected { get; set; }
}
Comment puis-je utiliser LINQ pour mettre à jour la "Sélection" de la propriété d'un Billet élément wheres son "Nom" de la propriété a la valeur de "Plage". En SQL, il serait:
UPDATE Tickets SET Selected = true WHERE Name = 'Beach'
Je pensais que j'étais sur la bonne voie avec ce...
tickets.Select(x => { x.Selected = true; return x; }).ToList().Where(x => x.Name == "Beach");
Vous devez vous connecter pour publier un commentaire.
Vous pouvez modifier l'ordre, puis utilisez l'opérateur Pourchaque:
Remarque:
ToList()
est nécessaire parce que IEnumerable ne prend pas en charge ForEach dans Linq - voir LINQ équivalent de foreach pour IEnumerable<T>foreach(x in list)
C# boucleSubmitChanges()
afin de persister vos modifications.IEnumerable
ne prend pas en charge.ForEach()
, de sorte qu'il est nécessaire.Peu tard pour répondre, mais je pense que nous n'avons pas à convertir à
ToList()
comme Mentionné par stuart ce qui fait que nous pouvons faire est de simplement ajuster Stuart code(qui est un grand morceau de code suivantUne autre option
Permettez-moi de commencer par dire cela, ne pas utiliser LINQ pour définir les propriétés comme ça, ce n'est pas comment LINQ est destiné à être utilisé.
Vous devrait écrire la requête pour sélectionner les lignes à être changé, du changement dans une boucle, et de soumettre les modifications à la base de données (si LINQ to SQL).