【发布时间】:2011-01-14 22:21:31
【问题描述】:
我有一个可以在 SQL 中完美运行的查询,但我正忙着将它转换为 linq。该表(下面的表 1)包含多种记录类型的状态更改。连接需要设置两个字段来创建有效连接:SubmissionId(状态所属表的pk)和SubmissionTypeId(确定状态所属的表)。
CREATE TABLE ##Table1 (Id int, Status varchar(50), SubmissionId int, SubmissionTypeId int)
insert into ##Table1(Id, Status, SubmissionId, SubmissionTypeId)
select 1 ,'Status1' ,1 , 1
union select 2,'Status2',1, 2
CREATE TABLE ##Table2 (ID int, Value varchar(50))
insert into ##Table2 (ID, Value)
select 1, 'Value1Table2'
CREATE TABLE ##Table3 (ID int, Value varchar(50))
insert into ##Table3 (ID, Value)
select 1, 'Value1Table3'
select ds.* from ##Table1 ds
left join ##Table2 di
on ds.SubmissionId = di.Id and ds.SubmissionTypeId = 2
left join ##Table2 dr
on ds.SubmissionId = dr.Id and ds.SubmissionTypeId = 1
where SubmissionTypeId in (1,2)
我已经尝试使用 into x from y in x.DefaultIfEmpty() 进行了几次迭代,但我无法在正确的位置设置 where 子句。我需要从 Table1 开始查询,因为这是值的来源。
作为一种解决方法,我将查询分成两部分,只是将状态数据按顺序添加到列表中,但似乎必须有更好的方法。
谢谢。
【问题讨论】:
标签: c# sql linq linq-to-entities