我需要帮助以从linq查询中获取价值。使用firstordefault()
var item = (from o in db.Employee
join a in db.EmployeeLineManager on o.Id equals a.EmployeeID
where o.Id == Id
select new
{
AddedBy = o.LastName + " " + o.FirstName,
LineManagerId = a.LineManagerId,
Email = o.Email
}).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
我可以获取项目中的内容(例如,如果我想获取电子邮件,可以使用item.Email)
但是,如果我使用ToList()
var item = (from o in db.Employee
join a in db.EmployeeLineManager on o.Id equals a.EmployeeID
where o.Id == Id
select new
{
AddedBy = o.LastName + " " + o.FirstName,
LineManagerId = a.LineManagerId,
Email = o.Email
}).ToList();
Run Code Online (Sandbox Code Playgroud)
我如何从商品中获取价值(例如,我想获取电子邮件,item.Email不起作用,请问我可以用什么来获取价值?
在第一个示例中,item是单个对象。在第二个示例中,它是对象列表。(顾名思义,ToList将结果转换为列表。)
List<T>没有名为的属性Email。但是它确实包含零个或多个在这种情况下可以使用的元素。
因此,您可以执行以下操作:
item.FirstOrDefault().Email
Run Code Online (Sandbox Code Playgroud)
也许:
item[0].Email
Run Code Online (Sandbox Code Playgroud)
或者您可以遍历列表等。
请记住以下几点:
item这是错误的名称。这是一个集合,所以称它为items。变量名称对于您理解自己的代码很重要。该列表可能为空,在这种情况下,以上两个示例用法都将引发异常。您应该始终进行一些null检查。例如:
items.FirstOrDefault()?.Email
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
35 次 |
| 最近记录: |