Errore del compilatore CS1947

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile assegnare la variabile di intervallo 'nome variabile' a --. Variabile di sola lettura.
Range variable 'variable name' cannot be assigned to -- it is read only.

Una variabile di intervallo è simile a una variabile di iterazione in una istruzione foreach. Non è possibile assegnarla a un'espressione di query.

Per correggere l'errore

  1. Rimuovere l'assegnazione alla variabile di intervallo.

  2. Se necessario, introdurre una variabile di intervallo nuova utilizzando la clausola let e utilizzarla per archiviare il valore.

Esempio

Nel codice seguente viene generato l'errore CS1947:

// cs1947.cs
using System.Linq;
class Test
{
    static void Main()
    {
        int[] array = new int[] { 1, 2, 3, 4, 5 };
        var x = from i in array
                let k = i
                select i = 5; // CS1947
        x.ToList();
    }
}

Vedere anche

Concetti

Espressioni query LINQ (Guida per programmatori C#)