2009-12-07 78 views
0

我有2個表Employee和Absence。我想做一個左外連接,這樣我就可以獲得所有員工和任何相關的缺席。在LINQ2SQL我可以使用以下方法來創建LEFT OUTER JOIN:如何在LinqToSql中使用LEFT OUTER JOIN時處理DateTime字段

from e in Employees 
join a in Absences on e.EmployeeID equals a.EmployeeID into ae 
from x in ae.DefaultIfEmpty() 
select new { FullName = e.Surname + ", " + e.Forename } 

這就是我要找的,但我想說明任何情況下開始日期。我可以將選擇語句更改爲

select new { FullName = e.Surname + ", " + e.Forename, x.StartDate } 

但我得到一個錯誤,因爲DateTime不可爲空。 如果沒有StartDate或實際日期(如果有),我該如何顯示空字符串?我試着用x.StartDate.ToShortDateString(),但是這顯然拋出,如果它是空的錯誤,我也試着:

select new {Surname = e.Surname, StartDate = x.StartDate == null ? "" : x.StartDate } 

但這也不管用。有什麼建議麼?

+0

不知道它是否會工作,通過嘗試使用明確的演員表: select new {StartDate =(DateTime?)x.StartDate} – LorenVS 2009-12-07 11:29:16

回答

0

在SELECT語句寫

選擇新{全名= e.Surname + 「」 + e.Forename,起始日期=(DateTime的?)x.StartDate}

這應該爲你工作。