Linq to SQL 在一个连接上具有更多条件

发布于 2024-12-10 15:32:11 字数 564 浏览 0 评论 0原文

我是 Linq to SQL 的新手,我正在尝试将此 SQL 转换为 Linq。你能帮我一下吗?

SELECT *
FROM [dbo].[tblTest]
INNER JOIN [dbo].[tblStationTest] ON [tblTest].[id] = [tblStationTest].[Test_id]
INNER JOIN [dbo].[tblTestType] ON [tblTest].[TestType_id] = [tblTestType].[id]
LEFT OUTER JOIN [dbo].[tblTestOrder] ON [tblTest].[id] = [tblTestOrder].[Test_id] 
              AND ([tblTestOrder].[TestOrderList_id] = 1)
WHERE ([Station_id] = 1)

导致我出现问题的是这个条件AND ([TestOrderList_id] = 1)

这个条件不能出现在Where类中,因为它会取消Left Join的效果

谢谢kurin

I'm new to Linq to SQL and I'm trying to transform this SQL into Linq. Could you please help me out.

SELECT *
FROM [dbo].[tblTest]
INNER JOIN [dbo].[tblStationTest] ON [tblTest].[id] = [tblStationTest].[Test_id]
INNER JOIN [dbo].[tblTestType] ON [tblTest].[TestType_id] = [tblTestType].[id]
LEFT OUTER JOIN [dbo].[tblTestOrder] ON [tblTest].[id] = [tblTestOrder].[Test_id] 
              AND ([tblTestOrder].[TestOrderList_id] = 1)
WHERE ([Station_id] = 1)

What is causing me problem is this condition AND ([TestOrderList_id] = 1)

This condition can't be in Where clase because it will cancel the effect of Left Join

Thanks kurin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

油饼 2024-12-17 15:32:11

你可以尝试类似的东西

from test in db.tblTest
    join stationTest in db.tblStationTest on test.id equals stationTest.Test_id
    join testType in db.tblTestType on test.TestType_id equals testType.id
    join testOrder in db.tblTestOrder on new{Key1  = test.id, Key2= 1} equals new{Key1 = testOrder.Test_id, Key2 = testOrder.TestOrderList_id} into tempOrders
   from t in tempOrders.DefaultIfEmpty()
   select new{test.Test_id, testType.something, t.somethingelse}

you can try something like

from test in db.tblTest
    join stationTest in db.tblStationTest on test.id equals stationTest.Test_id
    join testType in db.tblTestType on test.TestType_id equals testType.id
    join testOrder in db.tblTestOrder on new{Key1  = test.id, Key2= 1} equals new{Key1 = testOrder.Test_id, Key2 = testOrder.TestOrderList_id} into tempOrders
   from t in tempOrders.DefaultIfEmpty()
   select new{test.Test_id, testType.something, t.somethingelse}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文