1

我确信这非常简单,但对于我的生活,我找不到一个这样的例子。

我正在对表进行组加入,然后我想对该分组加入进行第二次加入。

表 1 订单 表 2 联系人 表 3 电话号码

dim query = from order in Orders _
Group Join contact in Contacts On order.contactId equals contact.contactId Into grpContacts = Group From gcontact in grpContacts.DefaultIfEmpty()
Group Join phone in PhoneNumbers On phone.phoneNumberId Equals gcontact.homePhoneId Into grpPhoneNumbers = Group from gphone in grpPhoneNumbers.DefaultIfEmpty()

当 gcontact 为空时,此查询将在最后一次连接时出错。这是有道理的......但是如果记录不存在,我怎么做这个加入并且只有空/无值?

更新已解决* 如果其他人遇到此问题,您可以在 ON 运算符之后添加一个表达式以确定之前的组加入是否为空。谢谢摩德!

dim query = from order in Orders _
Group Join contact in Contacts On order.contactId equals contact.contactId Into grpContacts = Group From gcontact in grpContacts.DefaultIfEmpty()
Group Join phone in PhoneNumbers On IF(phone is nothing, 0, phone.phoneNumberId) Equals gcontact.homePhoneId Into grpPhoneNumbers = Group from gphone in grpPhoneNumbers.DefaultIfEmpty()
4

1 回答 1

2

尝试使用 iif 来避免在 gcontact 为 null 时访问它:

Equals iif(gcontact is nothing, 0, gcontact.homePhoneId)
于 2013-09-04T03:28:42.450 回答