0

有人可以帮我完成这个 linq 左外连接查询,以便右表的第二列 (tempData) 包含在结果集中,即使它可能为空?

sortedData = From cs In mbCustomSort
             Order By cs(0)
             Group Join entry In tempData On cs(joinColumn) Equals entry(0) Into Group
             From last In Group.DefaultIfEmpty _
             Select New With {.groupField = cs(joinColumn)}
4

3 回答 3

0

抱歉,我用 C# 编写,但是如何:

var sortedData = from cs in mbCustomSort orderby cs.JoinColumn
    join entry in tempData on cs.JoinColumn equals entry.OtherJoinColumn into Group
    from subentry in Group.DefaultIfEmpty()
    select new { groupField = cs.JoinColumn };
于 2012-10-31T16:54:55.837 回答
0

LINQPad 的默认处理不允许,因此我在从此处item(fieldno)重新调整用途的数据中使用了实际字段名称,包括在 in 中添加一个没有对应的新行。这对我有用:MbcOrderIdMbtd

From cs In Mbcs _
Order By cs.Catalogid _
Group Join entry In mbtds On cs.OrderId Equals entry.OrderId Into Group _
From last In Group.DefaultIfEmpty _
Select cs.OrderId, last.Ocardtype

“作品”是指我添加的行显示为 Ocardtype(以及Ocardtype已经存在的另一行null)。

于 2012-11-01T13:11:27.057 回答
0

(已编辑)

From last In Group外连接变为内连接。Group当您继续使用变量时,不会发生这种情况:

sortedData = From cs In mbCustomSort
     Order By cs(0)
     Group Join entry In tempData On cs(joinColumn) Equals entry(0) Into Group
     Select New With {.groupField = cs(joinColumn), 
                      .col2 = Group(1).RightColumn }

RightColumn通过“内存查询”对象的属性进行更改。

于 2012-10-31T21:12:00.677 回答