0

我有三个表:tblApplicationstblInterviewstblDocuments简化)。

create table tblApplications(
    aplID int not null, --primary key
    aplName varchar(max) not null
)
create table tblInterviews(
    intApl int not null, --primary key & foreign key (tblApplications)
    intID int not null, --primary key
    intDate date not null
)
create table tblDocuments(
    docID int not null, --primary key
    docApl int not null, --foreign key (tblApplications & tblInterviews)
    docInt int null, --foreign key (tblInterviews)
    docPath varchar(max) not null
)

如您所见,应用程序是“顶部”条目,每次面试都必须引用一个应用程序。每个文件都必须引用一份申请,可能会或可能不会引用面试。

如果我将此模式加载到 LinqToSQL 设计器中并尝试选择文档,它只会选择引用采访的那些,因为它使用 aninner join将采访绑定到它。

但是,它应该使用outer join作为(部分)键(docInt)是可以为空的。

我如何告诉 LinqToSQL 这样做?

4

1 回答 1

0

DefaultIfEmpty在您的选择子句中使用

DefaultIfEmpty() method forces the inclusion of null child references where parents have no children. Note that this method of performing an outer join produces a flattened result.

这里有一个 vb.net 语法示例:

Dim JoinedResult = _
    From t1 In Table1 _
    Group Join t2 In Table2 _
       On t1.key Equals t2.key _
       Into RightTableResults = Group _
    From t2 In RightTableResults.DefaultIfEmpty _
    Select t1.Prop1, _
       t2.Prop2   

检查此链接:

外连接示例

于 2013-05-27T09:08:00.173 回答