LINQ加入声明问题

本文关键字:问题 声明 LINQ | 更新日期: 2023-09-27 18:25:42

我的LINQ语句有问题。

我有三个表:ExaminationsExaminationProtocolsSampleTests

到目前为止,我一直使用这个语句,因为我只需要前两个表的信息。

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 = trueExaminationProtocols

SampleTestExaminationProtocols之间的外键是

EP.ID equal ST.examinationProtocolID

我试图加入声明中的第三个表,但似乎没有得到我想要的结果。

如果有人能给我小费,我会很感激的。

LINQ加入声明问题

这会给您带来所需的结果吗?

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 };