2010-10-26 78 views
1

我有使用LINQ to SQL构建的此联系人列表。获取联系人列表的查询是:将值添加到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添加到我的联系对象。为此,我使用分部类将属性(PrimaryEmailAddress)添加到生成的Contact类。

是否有可能在LINQ查询中以某种方式将值添加到c.PrimaryEmailAddress?我现在的解决方案是创建匿名对象,然后迭代它们。

回答

1

下面是做这件事:

  1. 在你的实体设计师,创建Contact类和你ContactEmail类之间的association(就在你的类名猜在这里)。 Here are some instructions创建关联。

  2. 然后,配置您的DataContext以仅加载您的主要的ContactEmailHere are some instructionsDataContext级别上过滤子数据。

这里是完全不同的方式来做到这一点:

在您的局部Contact类,在你的部分OnLoaded()方法,查询主要ContactEmail。例如:

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

} 
相关问题