LINQ加入声明问题
本文关键字:问题 声明 LINQ | 更新日期: 2023-09-27 18:25:42
我的LINQ语句有问题。
我有三个表:Examinations
、ExaminationProtocols
和SampleTests
。
到目前为止,我一直使用这个语句,因为我只需要前两个表的信息。
var baseQuery = from e in context.Examinations
join ep in context.ExaminationProtocols
on e.ID equals ep.ExaminationID into er
from r in er.DefaultIfEmpty()
select new { E = e, EP = r };
但现在我需要得到至少有1个SampleTest
和字段acccurate = true
的ExaminationProtocols
。
SampleTest
和ExaminationProtocols
之间的外键是
EP.ID equal ST.examinationProtocolID
我试图加入声明中的第三个表,但似乎没有得到我想要的结果。
如果有人能给我小费,我会很感激的。
这会给您带来所需的结果吗?
var baseQuery = from e in context.Examinations
join ep in context.ExaminationProtocols
on e.ID equals ep.ExaminationID into er
from r in er.DefaultIfEmpty()
join st in context.SampleTests
on r.ID equals st.examinationProtocolID
where st.acccurate
select new { E = e, EP = r };
它可以这样写
var baseQuery = from e in Examinations
join ep in ExaminationProtocols.Where(x => SampleTests.Where(y => y.accurate).Select(z => z.examinationProtocolID).Contains(x.ID))
on e.ID equals ep.ExaminationID into er
from r in er.DefaultIfEmpty()
select new { E = e, EP = r };