我正在编写linq查询,如果右表中没有记录,则需要从左表始终事件中获取记录。我写了linq查询。右表可能由空值组成,在这种情况下,我收到错误。 如何在 on 子句中检查null条件,而不是在where子句中。如果我使用where子句来检查空值,它会得到零记录,但我需要所有左表记录。
join sfs in db.SubmissionFileUploadSummaries on new { sub.CollectionId, districtid, tbl.Tablename } equals new { CollectionId = (int)sfs.CollectionId, districtid = (int)sfs.OrganizationId, Tablename = sfs.TableName }
into sfslist
from sfssub in sfslist.DefaultIfEmpty()
where sfssub.CollectionId!=null
答案 0 :(得分:0)
保持left outer join
语义的一般规则是在之前应用正确的表格过滤器:
join sfs in (from sfs in db.SubmissionFileUploadSummaries
where sfs.CollectionId != null
select sfs)
on new { sub.CollectionId, districtid, tbl.Tablename }
equals new { CollectionId = (int)sfs.CollectionId, districtid = (int)sfs.OrganizationId, Tablename = sfs.TableName }
into sfslist
from sfssub in sfslist.DefaultIfEmpty()