2013-02-14 57 views
0

我試圖通過LINQ選擇一些數據,但系統顯示我這個錯誤不能被用於類型參數的方法'System.Object的「布爾等於(系統類型「System.DateTime的」的如何比較linq中的可空變量?

表達。 Object)'

My WorkingResults.EffectiveDate is DateTime?但我的日期變量是DateTime。如何更改我的代碼以解決此問題?

WorkingResult workingResultObj = (from workingResult in this.DataWorkspace.ApplicationData.WorkingResults 
where workingResult.EmployeeCode == employeeCode && workingResult.EffectiveDate.Equals(date)           
select workingResult).FirstOrDefault(); 

謝謝你的幫助。

回答

2

您可以使用.HasValue及其必須像

... 
where workingResult.EmployeeCode == employeeCode && 
(workingResult.EffectiveDate.HasValue && 
workingResult.EffectiveDate.Value.Date == date.Date).FirstOrDefault(); 
3

嗯,有一對夫婦的解決方法。首先,您可以將其設爲DateTime:

​​

我不知道什麼是有效日期。或者,你可以使用Object.Equals:

Object.Equals(workingResult.EffectiveDate, date) 

這可能不會給你預期的結果。如果你總是知道生效日期有一個值,那麼你可以使用@spajce方法。

+0

+1爲該名稱和建議也。感謝':D' – spajce 2013-02-14 03:57:32

0
WorkingResult workingResultObj = 
    (
     from workingResult 
     in this.DataWorkspace.ApplicationData.WorkingResults 
     where 
      workingResult.EffectiveDate.HasValue 
      && workingResult.EmployeeCode == employeeCode 
      && workingResult.EffectiveDate.Value == date           
     select workingResult 
).FirstOrDefault();