从单独的列添加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.EndToNullable ,因此您应该使用其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();