我有一个对象列表,这些对象可能有也可能没有联系信息:
// Join contact
query = query.Join(
(new ContactRepository(this.Db)).List().Where(x => x.IsMainContact),
x => new { x.ListItem.ContentObject.LoginId },
y => new { y.LoginId },
(x, y) => new ListItemExtended<ListItemFirm>
{
City = y.City,
State = y.State,
Country = y.Country
});
这会在'LoginId'上进行内连接。但是我需要一个outter join,这样如果给定的LoginId不存在联系信息,它将为空。 请帮忙
感谢
答案 0 :(得分:1)
您应该手动执行外部联接:
var contacts = (new ContactRepository(this.Db)).List();
query.Select(item =>
{
var foundContact = contacts.FirstOrDefault(contact => contact.Id == item.Id);
return new ListItemExtended<ListItemFirm>()
{
Id = item.Id,
City = foundContact != null ? foundContact.City : null,
State = foundContact != null ? foundContact.State : null,
Country = foundContact != null ? foundContact.Country : null,
};
})
但请记住,如果您的Contact项是struct - 检查null是不正确的方法。使用Any()运算符而不是FirstOrDefault()。