Mettiamo che abbia bisogno di usare l'indice dell'elemento corrente di una query LINQ.
Ad esempio, partendo dalla lista:
String[] pezzi = {"pedone", "torre", "cavallo", "alfiere"};
voglio ottenere una unica stringa che contiene:
"Pezzo numero 1: pedone", "Pezzo numero 2: torre", etc.
Il metodo Select ha un overload con il parametro "index" che può essere utilizzato per conoscere l'indice dell'elemento corrente. In altre parole è possibile fare:
pezzi.Select((item, index) =>
"Pezzo numero " + index.ToString() + ": " + item);
Per ottenere esattamente l'output desiderato possiamo usare il metodo Join() della classe String:
String.Join(", ",
pezzi.Select((item, index) =>
"\"Pezzo numero " + index.ToString() + ": "
item + "\"").ToArray());
(la conversione con ToArray() può essere omessa se si usa .net 4.0+)