Compilerfehler CS1941Compiler Error CS1941

Der Typ von einem der Ausdrücke in der Klausel „Klausel“ ist falsch.The type of one of the expressions in the 'clause' clause is incorrect. Fehler beim Typrückschluss im Aufruf von „Methode“.Type inference failed in the call to 'method'.

Der Rückschluss auf Typen in Abfrageausdrücken ergibt sich aus dem Typ der Elemente in der Datenquelle bzw. in den Datenquellen.Type inference in query expressions flows from the type of the elements in the data source(s).

So beheben Sie diesen FehlerTo correct this error

  1. Falls die Ursache des Fehlers nicht unmittelbar ersichtlich ist, untersuchen Sie die Abfrage sorgfältig und verfolgen Sie den Typ jedes einzelnen Klauselergebnisses von der Datenquelle hin zu dem Punkt, an dem der Fehler auftritt.If it is not immediately obvious why the error is occurring, examine the query carefully and trace the type of the result of each clause from the data source to the point where the error is occurring.

BeispielExample

Der folgende Code generiert Fehler CS1941, da der Operator equals int mit string vergleichen soll.The following code generates CS1941 because the equals operator is being asked to compare an int to a string.

// cs1941.cs  
using System.Collections;  
using System.Linq;  
class Test  
{  
    static int Main()  
    {  
        var nums = new[] { 1, 2, 3, 4, 5, 6 };  
        var words = new string[] { "lake", "mountain", "sky" };  
        IEnumerable e = from n in nums  
                        join w in words on n equals w // CS1941  
                        select w;  
        return 0;  
    }  
}  

Die Methode, bei der ein Fehler im Typrückschluss auftritt, ist die Methode, in die die Abfrageklausel zur Kompilierzeit übersetzt wird.The method in which type inference fails is the method that the query clause is translated to at compile time.

Siehe auchSee Also

LINQ-AbfrageausdrückeLINQ Query Expressions
Typbeziehungen in LINQ-AbfragevorgängenType Relationships in LINQ Query Operations