如何在linq左连接条件中检查空值,而不是在where条件中



我正在编写linq查询,需要从左表总是事件获取记录,如果在右表中没有记录。我为此写了linq查询。右表可能包含空值,在这种情况下,我得到错误。如何在子句中检查中的空条件,而不是在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

保持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()

相关内容

  • 没有找到相关文章

最新更新