Error del compilador CS1937

Actualización: noviembre 2007

Mensaje de error

El nombre 'nombre' no está dentro del ámbito en el lado izquierdo de 'equals'. Cambie las expresiones en ambos lados de 'equals'.
The name 'name' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.

La palabra clave equals es un operador especial que se utiliza en una cláusula join para determinar la igualdad entre dos expresiones. La variable de intervalo de la secuencia de origen del lado izquierdo está dentro del ámbito en el lado izquierdo de equals y la variable de intervalo del origen lateral derecho sólo está dentro del ámbito en el lado izquierdo de equals. Para comprobarlo, experimente con IntelliSense en el ejemplo de código siguiente.

Para corregir este error

  • Intercambie la posición de las dos variables de rango, como se muestra en la línea comentada del ejemplo siguiente:

Ejemplo

En el código siguiente se genera el error 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 };
    }
}

El lado izquierdo generalmente se denomina lado "externo" y el derecho se suele denominar lado "interno".

Vea también

Referencia

join (Cláusula, Referencia de C#)