3
我需要爲下面提到的SQL對應的LINQ查詢,我與嵌套掙扎加入SQL中的LINQ嵌套的聯接
SQL代碼:
SELECT
*
FROM
((((table1
INNER JOIN
(table2
RIGHT JOIN
table3
ON table2.StID = table3.StID)
ON table1.SCode = table3.ECode)
LEFT JOIN
table4
ON table3.TypeID = table4.TypeID)
LEFT JOIN
table5
ON table3.ValueID = table5.ValueId)
LEFT JOIN
table2 AS table6
ON table3.[Num] = table6.StID)
LEFT JOIN
table5 AS table7
ON table3.[TValueID] = table7.ValueId
WHERE
table2.Col1 = '1000'
我試圖打破在較小的查詢件和嘗試與最初的2個連接
I tried to make a Linq for
select * from
(table1
INNER JOIN
(table2
RIGHT JOIN
table3
ON table2.StID = table3.StID)
ON table1.SCode = table3.ECode)
Linq :
var query = from rightJoin in
(
from t3 in table3
join t2 in table2
on t3.StID equals t2 .StID into joined
from T in joined.DefaultIfEmpty()
select new
{
A = t3,
B = T
}
)
join T1 in table1
on rightJoin.A.ECode equals T1.SCode into innerjoin
select new
{
C = rightJoin.A.ECode
};
int i = query.Select(a => a.C).ToList().Count;
1)上述sql是否正確上述linq。我從sql和linq獲得不同數量的記錄,所以我相信linq代碼是不正確的。
2)我需要將原始sql轉換爲linq。
任何幫助將不勝感激。
我試過這個解決方案,但它給了超時異常,我試圖增加超時到2分鐘,但仍然超時異常來了,而在Sql服務器,它只需要0.01秒。我想這是交叉加入LINQ的某處。 – Agalo
您是否檢查了linq生成的查詢並與原始查詢進行比較?對我來說工作得很好。也許你需要檢查你的索引。 – Gandarez