是否可以为此查询编写LINQ? (在.NET 3.5中)
select tt.id
,tt.detailscount
,ttdmx.detailorder
,ttdmx.detailtype
,ttdm1.detailorder
,ttdm1.detailtype
,ttdm2.detailorder
,ttdm2.detailtype
from test.testtable tt
left join test.testtabledetails ttdmx on tt.id = ttdmx.causeid
and tt.maxcausedetailorder = ttdmx.detailorder
left join test.testtabledetails ttdm1 on tt.id = ttdm1.causeid
and tt.maxcausedetailorder - 1 = ttdm1.detailorder
left join test.testtabledetails ttdm2 on tt.id = ttdm2.causeid
and tt.maxcausedetailorder - 2 = ttdm2.detailorder
这些类是这样的:
public class Test {
public int id {get;set;}
public IList<TestDetails> details {get;set}
}
和
public class TestDetails {
public int id {get;set;}
public int detailOrder {get;set;}
public int detailType {get;set;}
}
我尝试使用queryOver,但它无法连接到同一个属性两次。
答案 0 :(得分:0)
最简单的方法是写:
...
from ttdmx in db.testtabledetails.Where(x =>
tt.id == x.causeid &&
tt.maxcausedetailorder == x.detailorder).DefaultIfEmpty()
...
这将被翻译成SQL左连接