Errore del compilatore CS1937

Aggiornamento: novembre 2007

Messaggio di errore

Il nome 'nome' non si trova nell'ambito a sinistra di 'equals'. Si consiglia di effettuare lo swapping delle espressioni ai lati di 'equals'.
The name 'name' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.

La parola chiave equals è un operatore speciale utilizzato nella clausola join per determinare l'uguaglianza tra due espressioni. La variabile di intervallo della sequenza di origine a sinistra si trova nell'ambito a sinistra di 'equals' e la variabile di intervallo della sequenza di origine a destra si trova solo nell'ambito a sinistra di 'equals'. È possibile verificare con IntelliSense nell'esempio di codice seguente.

Per correggere l'errore

  • Effettuare lo swapping delle due variabili di intervallo come illustrato nella riga commentata nell'esempio seguente:

Esempio

Nell'esempio seguente viene generato l'errore 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 };
    }
}

Il lato sinistro viene generalmente chiamato lato "esterno" e il destro viene generalmente chiamato lato "interno".

Vedere anche

Riferimenti

Clausola join (Riferimento C#)