2015-02-10 108 views
1

任何人都可以知道爲什麼這個代碼將正常運行:LINQ的where子句不過濾

EmployeeContextDataContext empContext = new EmployeeContextDataContext(); 

var departaments = empContext.Departments.Where(x => x.Name == "IT" || x.Name=="HR"); 

foreach (Department dept in departaments) 
     { 
     Response.Write(dept.Name); 

     var empInDept = dept.Employees; 

     foreach (var employee in empInDept) 
      { 
      Response.Write(employee.FirstName + employee.Gender); 
      } 
     } 

我添加。凡時刻(X => x.Gender == 「男」);它不會拋出任何東西在屏幕上?

foreach (Department dept in departaments) 
     { 
     Response.Write(dept.Name); 

     var empInDept = dept.Employees.Where(x => x.Gender =="Male"); 

     foreach (var employee in empInDept) 
      { 
      Response.Write(employee.FirstName); 
      } 
     } 
+3

因爲你沒有任何男性員工​​...... – 2015-02-10 17:01:21

+0

性別是一串嗎?在過濾之前,您是否看過'員工'以確保其中一些實際上具有該價值? – 2015-02-10 17:02:04

+0

@JustinPihony只是不在IT或人力資源部。 :) – 2015-02-10 17:02:42

回答

1

您確定您擁有IT或HR的男性員工嗎?

如果你這樣做,你確定Gender列的大寫M?

嘗試移除的情況下,靈敏度:

var empInDept = dept.Employees.Where(x => x.Gender.ToLower().Trim() == "male"); 
+0

謝謝Matthew,.Trim()完成了這項工作,似乎db在性別列中有一些空格:(非常感謝。 – Arah 2015-02-10 17:26:00

0

可以放置一個斷點內部x.Gender =="Male"表達到步驟通過它。