LINQ to Entities Union gibt einen Fehler aus

8

Ich habe Folgendes geschafft:

%Vor%

Aber zuletzt, als ich versuchte, eine dritte Ausgabe hinzuzufügen,

%Vor%

Ich habe den folgenden Fehler erhalten

so oder so wirft es folgenden Fehler

  

Error 1 Instanzargument: Konvertierung von 'System.Collections.Generic.List & lt; AnonymousType # 1 & gt;' zu 'System.Linq.IQueryable & lt; AnonymousType # 2 & gt;'
  Fehler 2 'System.Collections.Generic.List & lt; AnonymousType # 1 & gt;' enthält keine Definition für 'Union' und die beste Erweiterungsmethode Überladung 'System.Linq.Queryable.Union & lt; TSource & gt; (System.Linq.IQueryable & lt; TSource & gt ;, System.Collections.Generic.IEnumerable & lt; TSource & gt;) hat einige ungültige Argumente

Der einzige Unterschied in der dritten Sequenz ist, dass ich eine Verbindung mit einer anderen Tabelle verwende. Ich habe probiert .AsEnumerable() , .ToList() und .ToArray() , keine von ihnen geholfen.

    
Elangesh 11.02.2011, 19:02
quelle

2 Antworten

7

Wenn Sie interactions erstellen, ist sein Typ kein anonymer Typ von int und DateTime, sondern von int und Nullable DateTime. Dies liegt daran, dass Sie in Ihrer Inline-if-Anweisung niemals .Value von der Spalte "NULL" entfernen. Ihr Code sollte funktionieren, wenn Sie interactions wie folgt erstellen:

%Vor%

Einfacheres Beispiel:

%Vor%

Obwohl wir leicht erkennen können, dass die Inline-If-Anweisung in beiden Fällen niemals einen Nullwert zurückgibt, kann der Compiler keine solchen Garantien geben und muss den Rückgabewert im zweiten Fall an den Wert eines Nullable-Int eingeben. p>     

diceguyd30 11.02.2011, 20:15
quelle
0

Höchstwahrscheinlich sind t1.Key und i1.Key unterschiedliche Typen. Die anonymen Typen müssen genau die gleichen Eigenschaftennamen und -typen haben, die in derselben Reihenfolge deklariert sind, damit Sie sie verbinden können.

Als Nebenbemerkung möchten Sie wahrscheinlich auch diese Zeile Ihres Codes ändern:

%Vor%

dazu:

%Vor%

Andernfalls wird die Union nicht ausgeführt, da Sie die resultierende Abfrage nicht gespeichert haben.

    
Doctor Jones 11.02.2011 19:16
quelle