Dela via


Kompilatorfel CS1937

Namnet "name" finns inte i omfånget till vänster om "lika med". Överväg att byta uttryck på båda sidor av "lika med".

Nyckelordet equals är en särskild operator som används i en join sats för att fastställa likhet mellan två uttryck. Intervallvariabeln för den vänstra källsekvensen finns i omfånget på vänster sida av lika med, och intervallvariabeln för den högra källkällan finns bara i omfånget på vänster sida av lika med. Du kan kontrollera detta genom att experimentera med IntelliSense i följande kodexempel.

Så här åtgärdar du det här felet

  1. Växla positionen för de två intervallvariablerna enligt beskrivningen på den kommenterade raden i följande exempel:

Exempel

I följande exempel genereras 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 };  
    }  
}  

Den vänstra sidan kallas vanligtvis den "yttre" sidan och höger kallas vanligtvis den "inre" sidan.

Se även