2

我对 LINQ 语句有疑问。

我有 3 个表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 };

但现在我需要得到ExaminationProtocols至少有 1SampleTest个字段的那个acccurate = true

SampleTest和之间的外键ExaminationProtocols

EP.ID equal ST.examinationProtocolID

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

如果有人可以给我小费,我将不胜感激。

4

2 回答 2

2

这会给您所需的结果吗?

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 };
于 2013-08-01T07:56:41.080 回答
0

可以这样写

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 };
于 2013-08-01T08:05:33.877 回答