我需要帮助以从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();
我可以获取项目中的内容(例如,如果我想获取电子邮件,可以使用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();
我如何从商品中获取价值(例如,我想获取电子邮件,商品。电子邮件不起作用,请问我可以用什么来获取价值?
答案 0 :(得分:5)
在第一个示例中,item
是单个对象。在第二个示例中,它是对象的 list 。 (顾名思义,ToList
将结果转换为一个列表。)
List<T>
没有名为Email
的属性。但是它确实包含零个或多个在这种情况下可以使用的元素。
所以您可能会做类似的事情:
item.FirstOrDefault().Email
或者也许:
item[0].Email
或者您可以遍历列表等。
请记住以下几点:
item
在这一点上是错误的名称。这是一个集合,因此将其称为items
。变量名称对于您理解自己的代码很重要。列表可能为空,在这种情况下,上述两个示例用法都将引发异常。您应该始终进行null
检查。例如:
items.FirstOrDefault()?.Email