C# 从linq查询中获取值(需要想法/建议)
我需要帮助从linq查询中获取价值。 使用firstordefaultC# 从linq查询中获取值(需要想法/建议),c#,linq,C#,Linq,我需要帮助从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 {
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();
如何从项中获取值例如,我想获取电子邮件,项。电子邮件不起作用,请问我可以使用什么来获取值?在第一个示例中,项是单个对象。在第二个示例中,它是一个对象列表。顾名思义,ToList将结果转换为列表
列表没有称为电子邮件的属性。但它确实包含零个或多个元素,在这种情况下是这样的
所以你可以做一些类似的事情:
item.FirstOrDefault().Email
或许:
item[0].Email
或者你可以循环浏览列表,等等
要记住以下几点:
此时项的名称错误。这是一个集合,所以称之为项目。变量名对于理解自己的代码很重要。
列表可能为空,在这种情况下,上述两种示例用法都会引发异常。你应该经常做一些空值检查。例如:
items.FirstOrDefault()?.Email
在第一个示例中,项是单个对象。在第二个示例中,它是一个对象列表。顾名思义,ToList将结果转换为列表
列表没有称为电子邮件的属性。但它确实包含零个或多个元素,在这种情况下是这样的
所以你可以做一些类似的事情:
item.FirstOrDefault().Email
或许:
item[0].Email
或者你可以循环浏览列表,等等
要记住以下几点:
此时项的名称错误。这是一个集合,所以称之为项目。变量名对于理解自己的代码很重要。
列表可能为空,在这种情况下,上述两种示例用法都会引发异常。你应该经常做一些空值检查。例如:
items.FirstOrDefault()?.Email
在第二种情况下,项目的可能重复项是项目列表。它应该是命名的项目,以避免任何混淆。您可以像访问任何其他列表或数组一样访问其内容,例如items[0]。items{item.Email…}中的Email或foreachvar项。@PanagiotisKanavos谢谢第二种情况下的可能重复项是项目列表。它应该是命名的项目,以避免任何混淆。您可以像访问任何其他列表或数组一样访问其内容,例如项[0]。项{item.Email…}中的电子邮件或foreachvar项。@PanagiotisKanavos谢谢您关于空检查,此处可能会出现异常。但是,您希望得到一个明确的异常消息和/或类型,而不是一个空引用异常,它不能准确地告诉消费者出了什么问题。因此,仍然需要检查+清除消息,但这并不意味着您需要从整体上避免异常。对于空检查,异常可能是此处所需的结果。但是,您希望得到一个明确的异常消息和/或类型,而不是一个空引用异常,它不能准确地告诉消费者出了什么问题。因此,仍然需要一条检查+清除消息,但这并不意味着您需要从整体上避免异常。