根据条件更改属性

时间:2016-03-23 10:00:57

标签: c# linq

考虑以下代码片段:

var employeeDetails = db.Employees.Where(a => a.Username == username).Select(b => b).FirstOrDefault();

var emailTemp = new EmailTemplate
{
   EmailTo = employeeDetails.Email,
   Subject = somesubject,
   EmailFrom = "from@mydomain.com",
   EmailDelivered = "No",
   EmailPriority = "Normal",
   EmailReference = formId
   EmailTemplateId = 1
};

employeeDetails是一个简单的linq查询,它返回employees表中的用户记录。我想要实现的目标是将其发送给两个用户。第一个应该发送给提交表单的人,另一个发送给他们的经理。唯一更改的属性是EmailTemplateId,从1到2。

1 =用户

2 =经理

我似乎无法弄清楚如何去做。我的员工表中有经理列。

如果有人可以为我阐明这一点,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

List<EmailTemplate> emailTemps = new List<EmailTemplate>();

    emailTemps.AddRange( db.Employees.Where(a => a.Username == username).Select(b => new EmailTemplate{
       EmailTo = b.employeeDetails.Email,
       Subject = b.somesubject,
       EmailFrom = "from@mydomain.com",
       EmailDelivered = "No",
       EmailPriority = "Normal",
       EmailReference = b.formId
       EmailTemplateId = 1
    }).ToArray());

    emailTemps.AddRange(emailTemps.Select(e=> new EmailTemplate{
           EmailTo = ManagerEmailTo,
           Subject = e.Subject,
           EmailFrom = e.EmailFrom,
           EmailDelivered = e.EmailDelivered,
           EmailPriority = e.EmailPriority,
           EmailReference = e.EmailReference 
           EmailTemplateId = 2
        });

现在emailTemps包含两个列表。

答案 1 :(得分:0)

var emails = new List<EmailTemplate>();
var employeeDetails = db.Employees.Where(a => a.Username == username).Select(b => b).FirstOrDefault();
var menagerDetails = employeeDetails.Manager;

emails.Add(new EmailTemplate
{
    EmailTo = employeeDetails.Email,
    Subject = somesubject,
    EmailFrom = "from@mydomain.com",
    EmailDelivered = "No",
    EmailPriority = "Normal",
    EmailReference = formId
    EmailTemplateId = 1
});

emails.Add(new EmailTemplate
{
    EmailTo = menagerDetails.Email,
    Subject = somesubject,
    EmailFrom = "from@mydomain.com",
    EmailDelivered = "No",
    EmailPriority = "Normal",
    EmailReference = formId
    EmailTemplateId = 2
});

电子邮件包含两个具有不同数据的模板 - 适用于员工及其经理。