在LINQ to SQL表达式中向对象添加值

时间:2010-10-26 23:10:21

标签: linq 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添加到我的Contact对象中。为此,我使用部分类将属性(PrimaryEmailAddress)添加到生成的Contact类中。

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

1 个答案:

答案 0 :(得分:1)

以下是一种方法:

  1. 在您的实体设计器中,在Contact课程和ContactEmail课程之间创建association(只需在此猜测您的课程名称)。关于创建关联的Here are some instructions

  2. 然后,将DataContext配置为仅加载 ContactEmail。关于DataContext级别的儿童数据过滤的Here are some instructions

  3. 这是一种完全不同的方式:

    在部分Contact课程中,在部分OnLoaded()方法中,查询主要ContactEmail。例如:

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