linq,我不知道我在做什么

时间:2017-11-03 05:29:16

标签: vb.net linq

LINQ新手在这里,对我很轻松。

我在下面的查询中添加了另一个表:(在objGlobalDataContext.ActivityStatuses中加入c2在c2.Activity_Status_ID等于c.Status_ID)

我想返回一个状态字段(c2.status_name),但由于引用有空(c.Status_ID),我没有得到任何结果。

有人可以帮忙吗?简单点!

提前致谢..

    Dim objAdminActivity = (From c In objGlobalDataContext.Activities
                            Join c1 In objGlobalDataContext.ActivityTypes On c1.Activity_Type_ID Equals c.Activity_Type_ID
                            Join c2 In objGlobalDataContext.ActivityStatuses On c2.Activity_Status_ID Equals c.Status_ID
                            Order By c.Activity_Name.Trim()
                            Where c.Is_Reserved_Activity = False
                            Select c.Activity_Auto_ID, c.Activity_Name, c1.Activity_Type_Description,
                                c.Active, c.Activity_Number, c.Effective_From_Date, c.Effective_To_Date,
                                c2.Status_Name, c.Automatically_Created, c.Costed_Activity).ToArray()

1 个答案:

答案 0 :(得分:0)

如果您希望在没有匹配的Status_NameStatus_ID为null时获得空Status_ID,则可以使用左连接:

Dim objAdminActivity = (From c In objGlobalDataContext.Activities
                        Join c1 In objGlobalDataContext.ActivityTypes On c1.Activity_Type_ID Equals c.Activity_Type_ID
                        Group Join c2 In objGlobalDataContext.ActivityStatuses On c2.Activity_Status_ID Equals c.Status_ID Into Group
                        From c2 in Group.DefaultIfEmpty()
                        Order By c.Activity_Name.Trim()
                        Where c.Is_Reserved_Activity = False
                        Select c.Activity_Auto_ID, c.Activity_Name, c1.Activity_Type_Description,
                            c.Active, c.Activity_Number, c.Effective_From_Date, c.Effective_To_Date,
                            c2.Status_Name, c.Automatically_Created, c.Costed_Activity).ToArray()