C# 当需要左外部联接类型时,LINQ中联接表的问题
我有两张桌子:C# 当需要左外部联接类型时,LINQ中联接表的问题,c#,linq,C#,Linq,我有两张桌子: Network_Clients Clients 网络客户端有三列 networkClientID: Key Name: Varchar Description: Varchar 客户端有4列: clientID: Key networkClientId: FK to Network_Clients -> networkClientID Name: Varchar Description: Varchar 客户表: clientID networkClientID
Network_Clients
Clients
网络客户端有三列
networkClientID: Key
Name: Varchar
Description: Varchar
客户端有4列:
clientID: Key
networkClientId: FK to Network_Clients -> networkClientID
Name: Varchar
Description: Varchar
客户表:
clientID networkClientID name description
1 2 Client1 Client of Client2
2 3 Client1 Client of Client3
3 3 Client4 Client of Client3
4 1 Client4 Direct Placement Client
5 1 Client1 Direct Placement Client
networkClientID name description
1 Direct Placer NULL
2 Client2 Network Client Client2
3 Client3 Network Client Client3
4 Test One Test One Network Client
网络客户端表:
clientID networkClientID name description
1 2 Client1 Client of Client2
2 3 Client1 Client of Client3
3 3 Client4 Client of Client3
4 1 Client4 Direct Placement Client
5 1 Client1 Direct Placement Client
networkClientID name description
1 Direct Placer NULL
2 Client2 Network Client Client2
3 Client3 Network Client Client3
4 Test One Test One Network Client
以下是我的LINQ查询:
from cn in Clients_Network
join c in Clients on cn.networkClientID equals c.networkClientID
select new { cn, c }
这将返回除直接放置器和测试一项之外的所有内容,因为这两项在客户表中都没有链接字段
我怎样才能让这两个人出现呢?使用(即加入…):
这相当于SQL中的左连接使用(即连接到):
这相当于SQL中的左连接
Direct Placer
在Clients
表中有networkClientID
1。是的,它正在显示,但我的测试没有。很抱歉造成混淆。Direct Placer
确实有networkClientID
1,它存在于Clients
表中。是的,它正在显示,但我的测试之一没有。抱歉造成混淆。这在LinqPad中起作用,但现在它在我的C#app中导致了错误,它并没有导致错误,我只需要将一些东西转换为可为null,正如它所说的那样。@JamesWilson如果你需要返回客户端的一些属性,那么你应该像这样检查cc是否为null:new{cn,clientId=(cc==null)?null:(int?)cc.clientId}
(如果没有要连接的内容,则返回默认值时就是这种情况)这在LinqPad中起作用,但现在它在我的C#app中导致了错误,它并没有导致错误,我只需要将一些内容转换为可为null。@JamesWilson如果你需要返回客户端的某些属性,那么你应该像这样检查cc是否为null:new{cn,clientId=(cc==null)?null:(int?)cc.clientId}
(如果没有要连接的内容,则返回默认值时就是这种情况)