【发布时间】:2013-09-04 01:41:52
【问题描述】:
我确信这很简单,但我一生都找不到这样的例子。
我正在对一个表进行组加入,然后我想对该分组加入进行第二次加入。
表 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 运算符之后添加一个表达式,以确定之前的组加入是否为空。谢谢moander!
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()
【问题讨论】: