Partager via


Erreur du compilateur CS1937

Mise à jour : novembre 2007

Message d'erreur

Le nom 'nom' n'est pas dans la portée lorsqu'il est à gauche d''equals'. Si possible, échangez les expressions de chaque côté d''equals'.
The name 'name' is not in scope on the left side of 'equals'. Consider swapping the expressions on either side of 'equals'.

Le mot clé equals est un opérateur spécial utilisé dans une clause join pour déterminer l'égalité entre deux expressions. La variable de portée pour la séquence source de gauche se trouve dans la portée lorsqu'elle est à gauche d'equals et celle de la source de droite n'est dans la portée qu'à gauche d'equals. Vous pouvez le vérifier en utilisant la fonctionnalité IntelliSense dans l'exemple de code suivant.

Pour corriger cette erreur

  • Échangez la position des deux variables de portée comme indiqué dans la ligne de commentaire de l'exemple suivant :

Exemple

L'exemple suivant génère l'erreur 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 };
    }
}

Le côté gauche est généralement appelé côté « externe » et le côté droit le côté « interne ».

Voir aussi

Référence

join, clause (Référence C#)