我大力搜索对此的答案,但我无法找到(或理解)解决方案。我有一个查询,我正在加入另一个可能有或没有关联记录的表。下面是该查询:实体框架 - 处理没有来自连接表的记录的连接
var educationUniversity = result.new_educationUniversity.Select(c => new
{ c.majorDegree, c.dateEnd, c.dateStart, c.institutionName,
c.degreeProgramCompletionStatus, c.institutionAddress,
attachmentId = c.attachmentId ?? 0,
fileName = c.new_attachments.fileName ?? "No Attachment"}).ToList();
第一个表是“new_educationUniversity”,它拥有用户的学院或大学学位的细节。用户可能已上传附件(存储在“new_attachments”表中)。 attchmentID是“new_attachments”表中的主键和“new_educationUniversity”表中的外键。 EF看到了这种关系。
我将结果绑定到中继器,但如果没有相关的附件,代码将失败。一切工作正常,如果有附件或如果我删除对fileName的引用。
上面,我正在处理,如果fileName为NULL(或至少我试图),但我怀疑我的问题是该记录根本不存在,这是不同于NULL我猜。我试过使用类似:c.new_attachments.fileName.SingleOrDefault()或DefaultIfEmpty()没有运气。
作为比喻,假设您有一个CUSTOMERS表和一个ORDERS表。你想查询以下:
- 客户姓氏 - 客户第一名称 - 客户最近的订单ID
从来没有谁买什么东西。然而,您已注册的客户。我确信我正在做一些完全不讨好的事情,所以任何协助都非常感谢。谢谢!
你要求的是一个“左连接”,有很多例子可以说明如何做到这一点。 http://stackoverflow.com/questions/3404975/left-outer-join-in-linq或http://msdn.microsoft.com/en-us/library/vstudio/bb397895.aspx –
找到一种技术,通过工作这个链接虽然我不完全理解。谢谢! – Matt