我需要帮助来弄清楚如何将以下sql语句转换为linq语句
SELECT distinct tableA.x, tableA.y, tableA.z FROM tableA inner join tableB on tableA.id = tableB.id inner join tableC on tableA.id = 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))) )
答案 0 :(得分:0)
我想首先要指出的是你可以在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对其进行排序!