从单独的列添加Entity Framework中的日期时间和时间
我想得到所有尚未结束的事件
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参数必须具有数字公共类型。
如何在Entity Framework中编写此查询?
这是因为您尝试使用TimeSpan
添加DateTime
,这是不允许的。 为此,请尝试使用类似DateTime.AddSeconds(TimeSpan.TotalSeconds)
:
var list= dbContext.Events .Where(e=>e.EndDate.AddSeconds(e.EndTo.TotalSeconds) > DateTime.Now) .ToList();
或者,如果这是LINQ to Entities:
var list= dbContext.Events .Where(e=>EntityFunctions.AddSeconds(e.EndDate, e.EndTo.TotalSeconds) > DateTime.Now) .ToList();
编辑:
由于您的e.EndTo
是Nullable
,因此您应该使用其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();