我无法找到适用于当前.net版本的解决方案。
我有一个订单列表,我有一些订单的附加信息列表。 (订单可能有也可能没有其他信息)。 我正在寻找如何显示所有订单和其他信息(如果存在)。
我正在尝试这个:
Dim res = From k In o.OrdemItens
Join r In aditionalInformation On r.idReqCTP Equals k.Controle
Group By k.Controle Into Group
From g In Group.DefaultIfEmpty
Select g.k.Controle, g.r.Status
但它没有用。当订单没有附加信息时,不会返回任何内容。
有人可以帮助我吗? 谢谢。
答案 0 :(得分:1)
我想你想使用VB中明确的Group Join
:
Dim res = From k In o.OrdemItens
Group Join r In aditionalInformation On r.idReqCTP Equals k.Controle Into rj = Group
Select k.Controle, Statuses = (From r2 In rj Select r2.Status)
我不知道您在rj
中是否有多个匹配给定k
,所以我针对它运行了Select
。
如果您不想在状态中列出一个列表,可以将其展平:
Dim res = From k In o.OrdemItens
Group Join r In aditionalInformation On r.idReqCTP Equals k.Controle Into rj = Group
From r2 in rj.DefaultIfEmpty()
Select k.Controle, r2?.Status
您无法将?.
用于数据库,因此您必须执行以下操作:
Dim res = From k In o.OrdemItens
Group Join r In aditionalInformation On r.idReqCTP Equals k.Controle Into rj = Group
From r2 in rj.DefaultIfEmpty()
Select k.Controle, Status = If(r2 Is Nothing, Nothing, r2.Status)