更新:2007 年 11 月
错误消息
无法对范围变量“variable name”赋值 -- 它是只读的。
范围变量类似于 foreach 语句中的迭代变量。不能在查询表达式中为该变量赋值。
更正此错误
- 移除对范围变量的赋值。 
- 如果需要,通过使用 let 子句引入一个新的范围变量,并使用该变量存储值。 
示例
下面的代码生成 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();
    }
}