Ich habe Problem beim Konvertieren einer SQL-Abfrage in LINQ. Ich glaube, ich habe 95% davon in LINQ jedoch mit Ausgabe auf einKonvertieren von SQL-Abfrage in LINQ - Operator '&&' kann nicht auf Operanden vom Typ 'Int' und 'Bool'
SQL
SELECT
table1.Column1
FROM
table 1 table1
LEFT OUTER JOIN
table 2 table2 ON table2.Column1 = table1.Column1
AND table2.Column2 = 1838
WHERE
table1.Column2 = 1
AND table1.Column3 = 24029
AND (table2.[Column3] IS NULL OR table2.[Column3] = 1)
LINQ so weit kommen repliziert
var query = from table1 in table 1
join table2 in table 2 on table1.Column1 equals table2.Column1 && table2.Column2 == 1838 into result
from table2 in result.DefaultIfEmpty()
where table1.Column2 == 1 && table1.Column3 == 24029 && (table2.Column3 == null || table2.Column3 == 1)
select table1.Column1;
Wenn ich die Abfrage ausführen ich erhalte eine Fehlermeldung bei dieser
Liniejoin table2 in table 2 on table1.Column1 equals table2.Column1 && tabl2.Column2 == 1838 into result
Fehler:
CS0019 Operator '&&' cannot be applied to operands of type 'int' and 'bool'
Irgendwelche Vorschläge bitte?
Der beste Rat ist, verwenden könnte - nicht. LINQ ist nur eine Abfragesprache. * Entity Framework * hingegen ist ein * ORM *. Es ordnet * Objekte * Tabellen zu. Erstellen Sie korrekte * Entitäten * mit Relationen und Navigationseigenschaften, und EF generiert die JOIN-Anweisungen. –
Unter der Annahme, dass Ihre Entitäten Order und LineItem sind, könnte jedes LineItem eine Order-Eigenschaft haben. Eine Bestellung sollte eine LineItems-Sammlung haben. Wenn Sie eine Bestellung und alle Werbebuchungen laden möchten, können Sie einfach die Bestellung laden. Seine LineItems würden damit geladen werden –
Diese 'Aus Tabelle 1 Tabelle1' sieht nicht gültig aus. Auch nicht "aus Tabelle 1 in Tabelle 1". In solchen Namen darf es keine Leerzeichen geben. Auch 'table2.Column2 = 1838' sollte eigentlich in der where cause sein, nicht die on-Klausel des Joins im sql und absolut nicht in der Linq-Join. – juharr