Leer en inglés

Compartir a través de


Error del compilador CS1937

El nombre 'name' no está en el ámbito en el lado izquierdo de 'equals'. Considere la posibilidad de intercambiar las expresiones en ambos lados de 'equals'.

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

Para corregir este error

  1. Cambie la posición de las dos variables de rango tal como se muestra en la línea comentada en el ejemplo siguiente:

Ejemplo

El ejemplo siguiente genera el error CS1937:

C#
// 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 se denomina generalmente el lado "externo" y la derecha se denomina generalmente el lado "interno".

Consulte también