Ошибка компилятора CS1938
Обновлен: Ноябрь 2007
Сообщение об ошибке
Имя "name" находится вне области видимости правой части конструкции "equals". Возможно, требуется поменять местами выражения с обеих сторон "equals".
The name 'name' is not in scope on the right side of 'equals'. Consider swapping the expressions on either side of 'equals'.
Ключевое слово equals является специальным оператором, используемым в предложении join для определения равенства двух выражений. Переменная диапазона для правой части исходной последовательности находится в области в левой части равенства, а переменная диапазона для правой части источника находится только в области в левой части равенства. Это можно проверить, поэкспериментировав с IntelliSense в следующем примере кода.
Исправление данной ошибки
- Поменяйте местами две переменные диапазона, как показано в закомментированной строке в следующем примере.
Пример
В следующем коде возникает ошибка 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 };
}
}