更新:2007 年 11 月

错误消息

无法对范围变量“variable name”赋值 -- 它是只读的。

范围变量类似于 foreach 语句中的迭代变量。不能在查询表达式中为该变量赋值。

更正此错误

  1. 移除对范围变量的赋值。

  2. 如果需要,通过使用 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();
    }
}

请参见

概念

LINQ 查询表达式(C# 编程指南)