7
votes

Changer un champ dans un tableau à l'aide de LINQ

J'ai une gamme d'objets, où un champ est un champ booléen appelé IncluseReport. Dans un certain cas, je veux que ce soit par défaut pour toujours être vrai. Je sais que c'est aussi facile que cela: xxx

mais y a-t-il un moyen équilivent de le faire avec Linq? C'est plus à satisfaire ma curiosité, alors n'importe quoi ... Ma première pensée était de faire cela ... xxx

mais depuis que j'ai quelques champs dans mon objet, je n'ai pas fait " t Je veux devoir taper tous les champs et il s'agit simplement d'encombrer à l'écran à ce moment-là. Merci!


1 commentaires

LIST.Foreach est généralement froné lorsque d'autres ont noté ci-dessous. Voici un bon article qui y va aussi: blogs.msdn.com/b/ericlippert/archive/2009/05/18/...


5 Réponses :


12
votes

foreach est une sorte de linq: xxx

mais linq ne consiste pas à mettre à jour les valeurs. Donc, vous n'utilisez pas le bon outil.


Permettez-moi de quantifier "sorte de linq". Foreach est non linq, mais une méthode sur liste . Cependant, la syntaxe est similaire à linq.


2 commentaires

foreach est une méthode implémentée dans la liste de sorte que cela fonctionnerait uniquement si les récompenses sont une liste


Je ne sais pas pourquoi le -1? Bien sûr. FooSeach pourrait ne pas être «pur» mais cela fonctionnera pour ce que veut. Juste faire un .tolist () d'abord.



0
votes

Vous pouvez faire quelque chose comme ça: xxx

qui rend cette action parallèle si possible.


0 commentaires

2
votes

Il n'y a pas de méthode de mutation disponible dans LINQ. LINQ est utile pour interrogé, commander, filtrage, jointure et projection de données. Si vous avez besoin de la muter, vous avez déjà une méthode très propre et claire de le faire: votre boucle.

Liste expose un foreach méthode pour écrire quelque chose qui vous rappelle de Linq (mais n'est pas). Vous pouvez ensuite fournir une action ou un autre délégué / fonction qui applique votre mutation à chaque élément à son tour. (Ahmed Mageed's Réponse mentionne également le tableau légèrement différent.foreach méthode.) Vous pouvez écrire votre PROPRE PROPRE DE L'EXTENSION Pour faire la même chose avec IEnumerable (qui serait alors généralement plus applicable que la méthode susmentionnée et également être disponible pour votre réseau). Mais je vous encourage à garder simplement votre boucle, ce n'est pas vraiment sale.


0 commentaires

6
votes

Étant donné que vous commencez par un tableau, vous pouvez utiliser le Array .Foreseach code> Méthode :

Array.ForEach(awards, a => a.IncludeInReport = true);


0 commentaires

7
votes

Voici le code correct:

awards = awards.Select(a => {a.IncludeInReport = true; return a;});


0 commentaires