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