I have this contact list which I’m building using LINQ to SQL. The query to get a list of contacts is:
return db.Contacts.ToList();
In the list I also want to display each contact’s primary e-mail address. To do this I first rewrite my query:
return (from db.Contacts
select c).ToList();
I found this nice way to do left joins:
return (from db.Contacts
from ce in ContactEmails.Where(x => x.ContactID == c.ContactID && c.IsPrimary).DefaultIfEmpty()
select c).ToList();
But now I want to add this PrimaryEmailAddress to my Contact object. To do this I have added a property (PrimaryEmailAddress) to the generated Contact class, using a partial class.
Is it possible in the LINQ query to add the value to c.PrimaryEmailAddress somehow? My solution right now is to create anonymous objects and then iterate them.
Here’s one way to do it:
In your entity designer, create an association between your
Contactclass and yourContactEmailclass (just guessing at your class names here). Here are some instructions on creating an association.Then, configure your
DataContextto load only your primaryContactEmail. Here are some instructions on filtering child data at theDataContextlevel.And here is an entirely different way to do it:
In your partial
Contactclass, in your partialOnLoaded()method, query the primaryContactEmail. For example: