Добавить значения к объекту в выражении LINQ to SQL - PullRequest
1 голос
/ 27 октября 2010

У меня есть этот список контактов, который я создаю, используя LINQ to SQL. Запрос для получения списка контактов:

return db.Contacts.ToList();

В списке я также хочу отобразить основной адрес электронной почты каждого контакта. Для этого я сначала переписал свой запрос:

return (from db.Contacts
        select c).ToList();

Я нашел хороший способ сделать левые соединения:

return (from db.Contacts
        from ce in ContactEmails.Where(x => x.ContactID == c.ContactID && c.IsPrimary).DefaultIfEmpty()
        select c).ToList();

Но теперь я хочу добавить этот PrimaryEmailAddress в мой объект Contact. Для этого я добавил свойство (PrimaryEmailAddress) в сгенерированный класс Contact, используя частичный класс.

Возможно ли в запросе LINQ как-нибудь добавить значение в c.PrimaryEmailAddress? Мое решение сейчас состоит в том, чтобы создать анонимные объекты и затем повторить их.

1 Ответ

1 голос
/ 27 октября 2010

Вот один из способов сделать это:

  1. В конструкторе сущностей создайте ассоциацию между вашим классом Contact и вашимContactEmail класс (просто угадать ваши имена классов здесь). Вот несколько инструкций по созданию ассоциации.

  2. Затем настройте свой DataContext для загрузки только своего основного ContactEmail. Вот некоторые инструкции по фильтрации дочерних данных на уровне DataContext.

А вот совершенно другой способ сделать это:

В вашем частичном Contact классе, в вашем частичном OnLoaded() методе запросите основной ContactEmail.Например:

partial void OnLoaded()
{
    // get your DataContext here
    this.PrimaryContactEmail = db.ContactEmails
        .Where(ce => ce.ContactID == this.ContactID && ce.IsPrimary)
        .SingleOrDefault();

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