【问题标题】:Converting nested SQL statement to LINQ将嵌套 SQL 语句转换为 LINQ
【发布时间】:2015-03-13 21:37:26
【问题描述】:

我需要帮助弄清楚如何将以下 sql 语句转换为 linq 语句

选择不同的 tableA.x、tableA.y、tableA.z FROM tableA 内连接 tableB on tableA.id = tableB.id 内连接 tableA.id 上的 tableC = tableC.id WHERE (tableB.columnOne IN (SELECT tableX.columnOne FROM tableX INNER JOIN tableY ON tableX.xId = tableY.xId WHERE (tableY.xId = tableC.xId) ) AND (tableB.columnTwo IN (SELECT tableXx.columnTwo FROM tableXx INNER JOIN tableYy ON tableXx.XxId = tableYy.XxId WHERE tableYy.XxId =tableC.XxId))) )

【问题讨论】:

  • 不要只是转储 SQL 并要求转换。 至少展示一个类模型开始,你自己的第一个努力。

标签: sql linq linq-to-sql


【解决方案1】:

我想首先要指出的是您可以在 LINQ 中进行子查询。在您的主要 Where 子句中,您可能会为您的子查询创建查询(这将导致 IQueryable 类型),然后使用 .Any() 来预测是否有任何匹配项,例如

var tableXquery = {my tableX subquery};
var tableXxquery = {my tableXx subquery};

var result = context.tableB.where(b => tableXquery.any(x => x.columnOne == b.columnOne) && xx => tableXxquery.any(xx => xx.columnTwo == b.columnTwo));

我希望你明白 - 我只是倾向于将查询放在需要的地方,然后让 LINQ 解决!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    相关资源
    最近更新 更多