0

我尝试通过 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();

感谢您的任何帮助。

4

3 回答 3

3

好吧,有几个解决方法。首先,您可以将其设为 DateTime:

workingResult.EffectiveDate.GetValueOrDefault(DateTime.MinValue).Equals(date)

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

Object.Equals(workingResult.EffectiveDate, date)

这可能不会给你预期的结果。如果您始终知道生效日期是有价值的,那么您可以使用@spajce 方法。

于 2013-02-14T03:51:03.783 回答
2

您可以使用.HasValue和它必须喜欢

...
where workingResult.EmployeeCode == employeeCode && 
(workingResult.EffectiveDate.HasValue && 
 workingResult.EffectiveDate.Value.Date == date.Date).FirstOrDefault();
于 2013-02-14T03:49:45.830 回答
0
 WorkingResult workingResultObj = 
  (
      from workingResult 
      in this.DataWorkspace.ApplicationData.WorkingResults
      where 
            workingResult.EffectiveDate.HasValue
            && workingResult.EmployeeCode == employeeCode  
            && workingResult.EffectiveDate.Value == date                                         
      select workingResult
  ).FirstOrDefault();
于 2013-02-14T03:54:29.067 回答