使用英语阅读

通过


编译器错误 CS1938

名称“name”不在“等号”右侧的作用域中。 请考虑交换位于“等号”任意一侧的表达式。

equals 关键字是一种特殊运算符,其在 join 子句中用于确定两个表达式之间是否相等。 左侧源序列的范围变量在等号左侧的作用域中,右侧源的范围变量仅存在于等号左侧的作用域中。 可以通过以下代码示例中的 IntelliSense 进行实验,以对此进行验证。

更正此错误

  1. 交换两个范围变量的位置,如以下示例中的注释行所示:

示例

以下代码生成 CS1938:

// cs1938.cs  
using System.Linq;  
class Test  
{  
    static void Main()  
    {  
        int[] sourceA = { 1, 2, 3, 4, 5 };  
        int[] sourceB = { 3, 4, 5, 6, 7 };  
  
        var query = from a in sourceA  
                    join b in sourceB on b equals a // CS1938  
                    // Try the following line instead.  
                    // join b in sourceB on a equals b  
                    select new { a, b };  
    }  
}  

请参阅