Sulla Programmazione

Quattro chiacchere sulla programmazione e sulle bit-tecnologie con Fabrizio Cipriani

Indice di un elemento in una query LINQ

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:

Console.WriteLine(
    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+)

Comments