所以我正在努力将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();