更新:2007 年 11 月

错误消息

名称“name”不在“equals”左侧的范围中。请考虑交换“equals”两侧的表达式。

equals 关键字是一种在 join 子句中使用的特殊运算符,用于确定两个表达式是否相等。左侧源序列的范围变量位于 equals 左侧的范围中,而右侧源的范围变量仅位于 equals 左侧的范围中。可以通过试验 IntelliSense 验证这一点,如下面的代码示例所示。

更正此错误

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

示例

下面的示例生成 CS1937。

 复制代码
// cs1937.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 // CS1937
                    // Try the following line instead.
                    //join b in sourceB on a equals b
                    select new { a, b };
    }
}

左侧通常称为“外侧”,而右侧通常称为“内侧”。

请参见

参考

join 子句(C# 参考)