子组表的子组中的EF组连接

时间:2017-08-30 10:03:56

标签: c# sql-server entity-framework

所以我正在努力将SQL查询转换为我可以在Entity Framework中使用的东西

这是我的SQL查询

results[0].geometry.location.lng

在做了一些谷歌搜索后,我想出了EF的这段代码。

SELECT *
FROM [UUT_RESULT]
LEFT JOIN [STEP_RESULT] ON [UUT_RESULT].[ID] = [STEP_RESULT].[UUT_RESULT]  
LEFT JOIN [PROP_RESULT] ON [STEP_RESULT].ID = [PROP_RESULT].STEP_RESULT
LEFT JOIN [STEP_NUMERICLIMIT1] ON [STEP_RESULT].ID = [STEP_NUMERICLIMIT1].[STEP_RESULT]
LEFT JOIN [STEP_NUMERICLIMIT2] ON [STEP_NUMERICLIMIT1].ID = [STEP_NUMERICLIMIT2].[PROP_RESULT]
WHERE [UUT_RESULT].[UUT_SERIAL_NUMBER] = '170607014G100100539F'

看起来它已经处理了UUT_RESULT和STEP_RESULT之间第一次连接的第一部分并且运行正常,但我该如何进行其他连接?当我尝试时总是会出现语法错误。

我也尝试过使用linq和.Include但是查询需要运行,即SQL查询需要5秒钟才能获得数据vs linq查询耗时20分钟。

更新: 这篇文章Writing a nested join with LINQ to Entities的答案确实解决了我的问题,但这也可以使用groupjoin完成吗? 以下是我在帖子中使用答案的代码。

var sqlResults2 = db.UUT_RESULT.Where(x => x.UUT_SERIAL_NUMBER == "170607014G100100539F")
                  .GroupJoin(db.STEP_RESULT, x => x.ID, y => y.UUT_RESULT,
                  (f, bs) => new {UUT_RESULT = f, STEP_RESULT = bs.DefaultIfEmpty()}).ToList();

0 个答案:

没有答案