C# Error
CS1947 – Range variable ‘{0}’ cannot be assigned to — it is read only
Reason for the Error & Solution
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
-
Remove the assignment to the range variable.
-
If necessary, introduce a new range variable by using the
let
clause and use it to store the value.
Example
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
x.ToList();
}
}