我有这个联系人列表,我正在使用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?我现在的解决方案是创建匿名对象,然后迭代它们。
答案 0 :(得分:1)
以下是一种方法:
在您的实体设计器中,在Contact
课程和ContactEmail
课程之间创建association(只需在此猜测您的课程名称)。关于创建关联的Here are some instructions。
然后,将DataContext
配置为仅加载主 ContactEmail
。关于DataContext
级别的儿童数据过滤的Here are some instructions。
这是一种完全不同的方式:
在部分Contact
课程中,在部分OnLoaded()
方法中,查询主要ContactEmail
。例如:
partial void OnLoaded()
{
// get your DataContext here
this.PrimaryContactEmail = db.ContactEmails
.Where(ce => ce.ContactID == this.ContactID && ce.IsPrimary)
.SingleOrDefault();
}