当我们通过 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;
}
}
这里我写了简单的 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;
}
}