从单独的列中在实体框架中添加日期时间和时间
我想获取所有尚未结束的事件
I want to get all the events which are not ended yet
select * FROM [Events] where EndDate+cast(EndTo as datetime)>GETDATE()
,效果很好。
这是我的值(( EndTo:11:00:00.0000000,END DATE:2016-05-26
)
我尝试使用
var list = dbContext.Events
.Where(e => e.EndDate + e.EndTo > DateTime.Now)
.ToList();
我遇到错误
DbArithmeticExpression参数必须具有数字公用类型。
DbArithmeticExpression arguments must have a numeric common type.
如何在实体框架中编写此查询?
How can I write this query in Entity Framework?
这是因为您尝试将 DateTime
添加到 TimeSpan
,这是不允许的。为此,请尝试使用类似 DateTime.AddSeconds(TimeSpan.TotalSeconds)
的东西:
This is because you try to add DateTime
with TimeSpan
, which is not allowed. To do that, try to use something like DateTime.AddSeconds(TimeSpan.TotalSeconds)
instead:
var list= dbContext.Events
.Where(e=>e.EndDate.AddSeconds(e.EndTo.TotalSeconds) > DateTime.Now)
.ToList();
或者如果这是对实体的LINQ:
Or if this is LINQ to Entities:
var list= dbContext.Events
.Where(e=>EntityFunctions.AddSeconds(e.EndDate, e.EndTo.TotalSeconds) > DateTime.Now)
.ToList();
编辑:
由于您的 e.EndTo
是 Nullable< TimeSpan>
,因此您应该使用其值
:
Since your e.EndTo
is a Nullable<TimeSpan>
, then you should use its Value
:
var list= dbContext.Events
.Where(e=>e.EndDate.AddSeconds(e.EndTo.Value.TotalSeconds) > DateTime.Now)
.ToList();
或
var list= dbContext.Events
.Where(e=>EntityFunctions.AddSeconds(e.EndDate, e.EndTo.Value.TotalSeconds) > DateTime.Now)
.ToList();