当我们通过 id 获取记录时使用 Linq 查询如何将该值分配给另一列?

Using Linq query when we get record by id how can i assign that value to another column?

这里我写了简单的 where 条件 linq 查询我从数据库中获取数据,但我想将该数据分配给另一列。

员工

public class Employee
{
        public string Id{ get; set; }
        public string Name{ get; set; }
        public string Email{ get; set; }
}

Linq 查询:

public Employee GetEnqDetails(int EnqId)
{
    if (EnqId != null)
    {
        var x = from n in db.Employee 
                where n.Id == EnqId
                select n;
        return x.FirstOrDefault();
    }
    else
    {
        return null;
    }
}

这里来自 Employee table 无论我得到什么数据我都想将该数据分配给另一个 class as

public class EmailContent
{
        public string Subject { get; set; }
        public string Body { get; set; }
}

此处主题 =x.Name +"" x.Email 我如何分配该值

因此,您从方法 GetEnqDetails() 获取员工详细信息,您可以使用这些详细信息创建 EmailContent 的新实例:

var employ = GetEnqDetails(101);
if (employ != null)
{
    EmailContent emc = new EmailContent() { Subject = String.Format("{0} {1}", employ.Name, employ.Email), Body = "" }; 
    // proceed with emc 
}

如果您不想使用过滤后的员工详细信息,只需要用员工详细信息实例化 EmailContent 意味着您可以像下面这样更改方法:

public static EmailContent GetEnqDetails(string EnqId)
{
    if (EnqId != null)
    {
        return db.Employee.Where(n => n.Id == EnqId)
                          .Select(x => new EmailContent()
                          {
                              Subject = String.Format("{0} {1}",
                              x.Name, x.Email),
                              Body = ""
                          }).FirstOrDefault();
    }
    else
    {
        return null;
    }
}

根据评论更新:

注释中指定的数据类型不匹配,即 EnqId 是 int,n.Id 是字符串。请相应地更正它们。我只是在我的代码中将参数更改为字符串。因为比较 (if (EnqId != null)) 在值是整数时意义不大。因此,如果您使用 int 转发,请删除条件

首先,您的 GetEnqDetails 方法参数应该 string 因为 Employee class 中的 Id 是数据类型 string

然后你必须将你的查询结果投射到你的 EmailContent class like

public EmailContent GetEnqDetails(string EnqId)
{
    if (!string.IsNullOrEmpty(EnqId))
    {
        var x = from n in db.Employee
                        where n.Id == EnqId
                        select new EmailContent { Subject = n.Name + " " + n.Email, Body = "get any property by typing n." };
        return x.FirstOrDefault();
    }
    else
    {
        return null;
    }
}