DbFunctions 或类似的将 Linq 中日期时间类型列的时间与 Entity Framework 进行比较

DbFunctions or similar to compare time of day of a datetime type column in Linq to Entity Framework

我知道有一个函数可以只比较日期时间类型列的日期,但是如果我只想比较它的时间和另一个时间怎么办。 Linq To Entities 中有函数吗?

DbFunctions.TruncateTime(q.EndDate.Value)

它并不漂亮,但您可以将 Diff 变体方法与 TruncateTime 结合使用。例如,将时间与秒进行比较:

DbFunctions.DiffSeconds(DbFunctions.TrucateTime(x.Date1), x.Date1) -
    DbFunctions.DiffSeconds(DbFunctions.TrucateTime(x.Date2), x.Date2) == 0

会告诉你这两个时间(不同日期)是否相同。

我用过这个,效果很好。

SqlFunctions.DatePart("hh", t.Time.Value) == SqlFunctions.DatePart("hh", newTime) && SqlFunctions.DatePart("n", t.Time.Value) == SqlFunctions.DatePart("n", newTime)