我遇到將SQL查詢轉換爲LINQ的問題。我覺得我有這95%複製到LINQ但是其問題上加入將SQL查詢轉換爲LINQ - 操作符'&&'不能應用於'int'和'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到目前爲止
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;
當我運行查詢我在此得到一個錯誤線
join table2 in table 2 on table1.Column1 equals table2.Column1 && tabl2.Column2 == 1838 into result
錯誤:
CS0019 Operator '&&' cannot be applied to operands of type 'int' and 'bool'
有什麼建議嗎?
最好的建議是 - 沒有。 LINQ只是一種查詢語言。 *實體框架*另一方面是* ORM *。它將* objects *映射到表格。使用關係和導航屬性創建適當的*實體*,EF將生成JOIN語句。 –
假設您的實體是Order和LineItem,每個LineItem都可以有一個Order屬性。訂單應該有一個'LineItems'集合。如果您想加載訂單和所有訂單項,則只需加載訂單即可。它的LineItems將會加載它 –
這個'從table 1 table1'看起來不正確。 「從表1中的表1'都沒有。這樣的名稱中不能有空格。另外'table2.Column2 = 1838'應該是真正的原因,而不是sql中連接的on子句,並且絕對不能在Linq連接中存在。 – juharr