C# 初學者在這里:我只想看到有與當前用戶年齡相同的員工的設施。
出于某種原因FirstOrDefault(),它下面有一條紅線,上面寫著:
“Facility”不包含“FirstOrDefault”的定義,并且無法找到接受“Facility”型別的第一個引數的可訪問擴展方法“FirstOrDefault”(您是否缺少 using 指令或程式集參考?
這是行:
facilities = facilities.Where(facility => facility.Employee.FirstOrDefault().Age == (int)HttpContext.User.GetAge());
在檔案的頂部,我有“使用 System.Linq”,我知道它正在作業,因為沒有它,Where 會出現錯誤。所以,我想知道還有什么可能導致這個問題?
uj5u.com熱心網友回復:
嘗試這個。首先,您需要根據謂詞過濾一系列值,然后回傳序列的第一個元素。在這里閱讀更多
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();
uj5u.com熱心網友回復:
假設 factory.Employee 是一個串列型別:
var userAge = (int)HttpContext.User.GetAge();
facilities.Where(facility => facility.Employee.Any(e => e.Age.Equals(userAge)));
如果不是,并且每個設施只有一名員工,那么
var userAge = (int)HttpContext.User.GetAge();
facilities.Where(facility => facility.Employee == userAge);
uj5u.com熱心網友回復:
你已經在迭代了facilities,我相信Employee屬性與Facility類有一對一的關系,即 Employee 不是一個串列。
就在下面的代碼將作業
var emp_age = HttpContext.User.GetAge() as int;
facilities = facilities.Where(facility => facility.Employee.Age == emp_age);
uj5u.com熱心網友回復:
錯誤是因為facility.Employee沒有實作該FirstOrDefault方法。可能它不是List/IEnumerable(或ICollection一般而言)。
您可以先按年齡進行比較,然后使用 FirstOrDefault
int age = (int)HttpContext.User.GetAge();
facilities = facilities.Where(facility => facility.Employee.Age == age).FirstOrDefault();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/323395.html
