c# - 将以下 SQL 转换为 LINQ 的问题

标签 c# sql asp.net-mvc linq

好的,所以我一直在努力弄清楚如何嵌入多个选择 在 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 SQL join这里看起来简单多了。假设您已经设置了 navigation properties正确地,这看起来有点像这样:

from a in db.TableA
where a.TableB.TableC.C_Number == "10001"
select a;

或者用流利的语法:

db.TableA.Where(a => a.TableB.TableC.C_Number == "10001")

对应的 SQL 是这样的:

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'

关于c# - 将以下 SQL 转换为 LINQ 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23658146/

相关文章:

c# - 瑞典 SSN 正则表达式拒绝特定年龄以下的用户

c# - 为什么打开 SSMS 会影响控制台应用程序

mysql - 如何使用 ID 从 Sqlite 中删除一行,其中我的 ID 是二进制数据 (GUID)

月/年报表的sql查询

sql - OVER ORDER BY 中的多个列

c# - 如何将 Razor View 转换为字符串?

asp.net-mvc - IdentityServer MVC token 到期

c# - 添加基于变量的附加 linq where 子句

c# - Autofac 有序列表作为参数

c# - ‘帮助’ 服务器无法生成主键列