Je veux faire quelque chose comme ça:
from a in stuff
let counter = 0
select new { count = counter++, a.Name };
Mais je reçois une erreur me disant que le compteur est en lecture seule. Existe-t-il un moyen de faire quelque chose de similaire à cela, sans déclarer une variable en dehors de la requête?
Fondamentalement, je veux juste afficher une colonne count/index dans LINQPad (ce qui est génial, BTW), ce qui signifie que je ne peux pas déclarer le compteur à l'avance.
Plutôt que d'utiliser des effets secondaires, utilisez la surcharge de Select
qui prend un index:
stuff.Select((value, index) => new { index, value.Name });
Vous pourriez le faire en utilisant des effets secondaires, mais pas de la manière que vous avez essayée:
int counter = 0;
var query = from a in stuff
select new { count = counter++, a.Name };
Je déconseille cependant fortement cela.
Si vous voulez vraiment que ce soit un compteur, et pas seulement un index, déplacez simplement la déclaration de compteur en dehors de l'expression LINQ
var counter = 0;
from a in stuff
select new { count = counter++; a.Name };
Ajoutez simplement deux variables ici NumberRow
est pour ça
.Select((x,NumberRow) => new ViewModelArchiveOrder
{
NumberRow= NumberRow + 1,
})