【发布时间】:2013-11-24 19:27:48
【问题描述】:
我努力寻找这个问题的答案,但我无法找到(或理解)解决方案。我有一个查询,我正在加入另一个可能有也可能没有关联记录的表。这是查询:
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 看到了这种关系。
我将结果绑定到转发器,但如果没有相关附件,则代码在上面的行中失败。如果有附件或者我删除了对文件名的引用,一切正常。
上面,我正在处理文件名是否为 NULL(或者至少我正在尝试),但我怀疑我的问题是该记录根本不存在,这与我猜的 NULL 不同。我试过使用类似的东西: c.new_attachments.fileName.SingleOrDefault() 或 DefaultIfEmpty() 没有运气。
打个比方,假设您有一个 CUSTOMERS 表和一个 ORDERS 表。您要查询以下内容:
-客户姓氏 -客户名字 - 客户最近的订单 ID
但是,您的注册客户从未购买过任何东西。我确定我正在做一些完全不合时宜的事情,因此非常感谢任何帮助。谢谢!
【问题讨论】:
-
您所要求的称为“左连接”,有很多示例说明如何执行此操作,例如stackoverflow.com/questions/3404975/left-outer-join-in-linq 或 msdn.microsoft.com/en-us/library/vstudio/bb397895.aspx
-
通过此链接找到了一种有效的技术,尽管我并不完全理解它。谢谢!
标签: c# sql entity-framework join