首页 > 解决方案 > 即使使用 System.Linq,C# FirstOrDefault() 也无法正常工作

问题描述

这里是 C# 初学者:我只想查看有与当前用户年龄相同的员工的设施。

由于某种原因FirstOrDefault(),它下面有一条红线,上面写着:

“Facility”不包含“FirstOrDefault”的定义,并且找不到接受“Facility”类型的第一个参数的可访问扩展方法“FirstOrDefault”(您是否缺少 using 指令或程序集引用?

这是行:

facilities = facilities.Where(facility => facility.Employee.FirstOrDefault().Age == (int)HttpContext.User.GetAge());

在文件的顶部,我有“使用 System.Linq”,我知道它正在工作,因为没有它,Where 会出现错误。所以,我想知道还有什么可能导致这个问题?

标签: c#.netreferenceusing

解决方案


尝试这个。首先,您需要根据谓词过滤值序列,然后返回序列的第一个元素。在这里阅读更多

facilities = facilities.Where(facility => facility.Employee.Age == (int)HttpContext.User.GetAge()).FirstOrDefault();

这更具可读性,

var userAge = (int)HttpContext.User.GetAge();
facilities = facilities.Where(facility => facility.Employee.Age == userAge).FirstOrDefault();

同意@Metro,您可以简单地使用,

var userAge = (int)HttpContext.User.GetAge();
var facility = facilities.FirstOrDefault(facility => facility.Employee.Age == userAge);

推荐阅读