我尝试通过linq选择一些数据,但系统显示我的错误
'System.DateTime'类型的表达式不能用于方法'Boolean Equals(System.Object)'的'System.Object'类型的参数
我的WorkingResults.EffectiveDate是DateTime?但是我的日期变量是DateTime。如何更改代码以解决此问题?
WorkingResult workingResultObj = (from workingResult in this.DataWorkspace.ApplicationData.WorkingResults
where workingResult.EmployeeCode == employeeCode && workingResult.EffectiveDate.Equals(date)
select workingResult).FirstOrDefault();
感谢您的帮助。
答案 0 :(得分:3)
嗯,有几个解决方法。首先,你可以把它变成DateTime:
workingResult.EffectiveDate.GetValueOrDefault(DateTime.MinValue).Equals(date)
我不知道有效日期是什么。或者,您可以使用Object.Equals:
Object.Equals(workingResult.EffectiveDate, date)
这可能无法给您预期的结果。如果你总是知道生效日期有一个值,那么你可以使用@spajce方法。
答案 1 :(得分:2)
您可以使用.HasValue,并且必须使用
...
where workingResult.EmployeeCode == employeeCode &&
(workingResult.EffectiveDate.HasValue &&
workingResult.EffectiveDate.Value.Date == date.Date).FirstOrDefault();
答案 2 :(得分:0)
WorkingResult workingResultObj =
(
from workingResult
in this.DataWorkspace.ApplicationData.WorkingResults
where
workingResult.EffectiveDate.HasValue
&& workingResult.EmployeeCode == employeeCode
&& workingResult.EffectiveDate.Value == date
select workingResult
).FirstOrDefault();