C# 将以下SQL转换为LINQ时出现的问题

C# 将以下SQL转换为LINQ时出现的问题,c#,sql,asp.net-mvc,linq,C#,Sql,Asp.net Mvc,Linq,好的,我一直在想如何嵌入多个select 在LINQ查询中,我没有经常使用LINQ 我已经提出了一个非常简单的SQL语句,我正在尝试转换,如果有人能帮助我将其转换为LINQ并解释其中的逻辑,我将不胜感激 SELECT * FROM TABLE_A WHERE TABLE_B_REF IN (SELECT TABLE_B_REF FROM TABLE_B WHERE TABLE_B.TABLE_C_REF IN (SELECT TABLE_C_REF FROM TABLE_C WHERE C_N

好的,我一直在想如何嵌入多个select 在LINQ查询中,我没有经常使用LINQ

我已经提出了一个非常简单的SQL语句,我正在尝试转换,如果有人能帮助我将其转换为LINQ并解释其中的逻辑,我将不胜感激

SELECT * FROM TABLE_A
WHERE TABLE_B_REF IN
(SELECT TABLE_B_REF FROM TABLE_B
WHERE TABLE_B.TABLE_C_REF IN 
(SELECT TABLE_C_REF FROM TABLE_C WHERE C_NUMBER = '10001'))
我在谷歌上搜索过,但我得到的东西太复杂了,无法在多个嵌入式系统中跟踪 查询

A在这里似乎简单得多。假设您已正确设置,则看起来有点像这样:

from a in db.TableA
where a.TableB.TableC.C_Number == "10001"
select a;
SELECT a.* 
FROM TABLE_A a
JOIN TABLE_B b ON a.TABLE_B_REF = b.TABLE_B_REF
JOIN TABLE_C c ON b.TABLE_C_REF = c.TABLE_C_REF
WHERE c.C_NUMBER = '10001'
或使用流利的语法:

db.TableA.Where(a => a.TableB.TableC.C_Number == "10001")
相应的SQL如下所示:

from a in db.TableA
where a.TableB.TableC.C_Number == "10001"
select a;
SELECT a.* 
FROM TABLE_A a
JOIN TABLE_B b ON a.TABLE_B_REF = b.TABLE_B_REF
JOIN TABLE_C c ON b.TABLE_C_REF = c.TABLE_C_REF
WHERE c.C_NUMBER = '10001'
A在这里似乎简单得多。假设您已正确设置,则看起来有点像这样:

from a in db.TableA
where a.TableB.TableC.C_Number == "10001"
select a;
SELECT a.* 
FROM TABLE_A a
JOIN TABLE_B b ON a.TABLE_B_REF = b.TABLE_B_REF
JOIN TABLE_C c ON b.TABLE_C_REF = c.TABLE_C_REF
WHERE c.C_NUMBER = '10001'
或使用流利的语法:

db.TableA.Where(a => a.TableB.TableC.C_Number == "10001")
相应的SQL如下所示:

from a in db.TableA
where a.TableB.TableC.C_Number == "10001"
select a;
SELECT a.* 
FROM TABLE_A a
JOIN TABLE_B b ON a.TABLE_B_REF = b.TABLE_B_REF
JOIN TABLE_C c ON b.TABLE_C_REF = c.TABLE_C_REF
WHERE c.C_NUMBER = '10001'