Errore del compilatore CS1938

Aggiornamento: novembre 2007

Messaggio di errore

Il nome 'nome' non si trova nell'ambito a destra di 'equals'. Si consiglia di effettuare lo swapping delle espressioni ai lati di 'equals'.
The name 'name' is not in scope on the right 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

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

Vedere anche

Riferimenti

Clausola join (Riferimento C#)