LINQ Join и GroupJoin - PullRequest
       1

LINQ Join и GroupJoin

1 голос
/ 25 января 2011

У меня есть список объектов, эти объекты могут иметь или не иметь контактную информацию:

            // 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. Но мне нужно внешнее соединение, чтобы, если контактная информация не существовала для данного LoginId, она была пуста. Пожалуйста, помогите

спасибо

1 Ответ

1 голос
/ 25 января 2011

Вы должны выполнить внешнее объединение вручную:

            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 имеет структуру, проверка на нулевое значение не является правильным способом. Используйте оператор Any () вместо FirstOrDefault ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...