This documentation is archived and is not being maintained.

Compiler Error CS1947

Visual Studio 2008

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