operator'=='不能应用于'system.timespan'和'system.datetime'类型的操作数

时间:2018-03-12 16:24:47

标签: c# asp.net

你能弄明白我怎样才能比较它们?我的意思是当我将数据库时间与模型时间进行比较时,它给了我这个错误:

  

operator'=='不能应用于'system.timespan'类型的操作数   和'system.datetime'

以及ehours

Here is the screenshot

var isExist = db.CRoom_Tb.Any(x => x.Rooms == b.Rooms && x.Check_In == b.Check_In && x.Hours == b.Hours && x.EHours == b.EHours);

我的模特:

[DataType(DataType.Time)]
[DisplayFormat(DataFormatString = "{0:t}", ApplyFormatInEditMode = true)]
public DateTime EHours { get; set; }
[DataType(DataType.Time)]
[DisplayFormat(DataFormatString = "{0:t}", ApplyFormatInEditMode = true)]
public DateTime Hours { get; set; }

我的数据库:

Hours time(7)
EHours time(7)

1 个答案:

答案 0 :(得分:4)

错误非常明确,在此处有描述性。您正在将可空的Timespan(Timespan?)与DateTime进行比较。在您发布的模型代码中,您可以清楚地看到它是一个DateTime对象。

这应该很容易在代码中解决,但DateTime有一个.TimeOfDay函数,它将DateTime对象的时间部分作为TimeSpan返回。

试试这个:

var isExist = db.CRoom_Tb.Any(x => x.Rooms == b.Rooms && 
                                   x.Check_In == b.Check_In &&
                                   x.Hours == b.Hours.TimeOfDay &&
                                   x.EHours == b.EHours.TimeOfDay);