Is there a way to accurately convert the following SQL query to LINQ
SELECT * FROM T1
WHERE ColumnA IN (
SELECT FkColumnA FROM T2
WHERE FkColumnB IN (
SELECT ColumnB FROM T3
WHERE FkColumnC IN (
SELECT ColumnC FROM T4
WHERE FkColumnD = 1)) AND FkColumnE is null AND ColumnF = 0)
Also, does anyone know of any documentation wherein any logic or guideline to convert SQL queries to LINQ is laid out?
EDIT 1:
The equivalent for the above using JOINS would be as below:
select * from T1 a
inner join T2 b on a.FKColumnA = b.ColumnA
inner join T3 c on c.ColumnB = b.FkColumnB
inner join T4 d on d.ColumnC = c.FkColumnC
where a.FkColumnD is null and a.ColumnE = 0
and d.ColumnC = 1
and it's equivalent LINQ query would be
var linq = from q in context.T1
join r in context.T2
on q.FKColumnA equals r.ColumnA
join s in context.T3
on r.FkColumnB equals s.ColumnB
join t in context.T4
on s.FkColumnC equals t.ColumnC
where q.FkColumnD != null && q.ColumnE == false && t.ColumnC == 56816
select q.FkColumnF;
But using JOINS looked to be a bit more simpler and better in LINQ. Thus the question is for my knowledge purpose only.
INclauses rather thanJOINs?