Compiler Error CS1947

Range variable 'variable name' cannot be assigned to -- it is read only.

A range variable is like an iteration variable in a foreach statement. It cannot be assigned to in a query expression.

To correct this error

  1. Remove the assignment to the range variable.

  2. If necessary, introduce a new range variable by using the let clause and use it to store the value.


The following code generates 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  

See also