Поделиться через


Ошибка компилятора CS1937

Обновлен: Ноябрь 2007

Сообщение об ошибке

Имя "name" находится вне области видимости левой части конструкции "equals". Возможно, требуется поменять местами выражения с обеих сторон "equals".
The name 'name' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.

Ключевое слово equals является специальным оператором, используемым в предложении join для определения равенства двух выражений. Переменная диапазона для левой части исходной последовательности находится в области в левой части равенства, а переменная диапазона для правой части источника находится только в области в левой части равенства. Это можно проверить, поэкспериментировав с 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#)