如何检查linq左连接条件中的空值在where条件中

时间:2016-06-28 06:54:57

标签: linq linq-to-sql

我正在编写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

1 个答案:

答案 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()