Vraag Kan ik een oplopende telvariabele hebben in LINQ?


Ik wil zoiets als dit doen:

from a in stuff
let counter = 0
select new { count = counter++, a.Name };

Maar ik krijg een foutmelding dat de teller alleen wordt gelezen. Is er een manier om iets soortgelijks te doen, zonder een variabele buiten de query te declareren?

Eigenlijk wil ik gewoon een kolom voor aantal / index weergeven LINQPad (wat geweldig is, BTW), wat betekent dat ik de teller niet van tevoren kan aangeven.


39
2018-02-05 17:19


oorsprong


antwoorden:


In plaats van bijwerkingen te gebruiken, gebruikt u de overbelasting van Select welke een index neemt:

stuff.Select((value, index) => new { index, value.Name });

U kon doe het met bijwerkingen, maar niet zoals je het probeerde:

int counter = 0;
var query = from a in stuff
            select new { count = counter++, a.Name };

Ik zou dit echter sterk afraden.


90
2018-02-05 17:20



Als u echt wilt dat het een teller is, en niet alleen een index, verplaats dan de tellerverklaring buiten de LINQ-uitdrukking

var counter = 0;
from a in stuff
select new { count = counter++; a.Name };

6
2018-02-05 17:22