2

我们有一个 SQL Server 2005 表,其中包含一个日期列和一个单独的时间列。当我尝试查询此表时,我想做与以下 SQL 等效的操作:

where Date + Time > @Something

一些背景信息 - 日期存储为具有 00:00 时间组件的日期,时间存储为具有 1900-01-01 日期组件的时间 - 这意味着在 SQL 中将两者相加可以获得完整的 DateTime .

我知道上面有索引含义,但这不是问题所在。

你如何在 linq to entity 中做到这一点?

其他一些需要注意的事项:

  • 更改数据库架构是不可能的。
  • 这是 SQL 2005,因此没有 Time 数据类型,也没有从 EF 返回 TimeSpan(我尝试更改 EF 模型以尝试将其转换为 TimeSpan,但没有骰子)
  • 我想尝试坚持纯 Linq-to-Entities,而不是走 E-SQL / 存储过程 / ExecuteQuery 路线。
4

2 回答 2

0

非常蹩脚的想法,但是:

var date = DateTime.Parse("2012-10-23");
var time = DateTime.Parse("1900-01-01 09:00:00);
var something = date + time;

[...] where Date + Time > something;
于 2012-10-23T21:08:10.713 回答
0

实体框架(版本 > 4)具有 EntityFunctions 类。因此,您可以执行以下操作:

... where EntityFunctions.CreateDateTime(date.Year, date.Month, date.Day, 
             time.Hour, time.Minute, time.Second) < DateTime.Now

或者你可以用老式的方式来做:

... where date.Date < DateTime.Now.Date || (date.Date == DateTime.Now.Date && time.Time < DateTime.Now)
于 2012-10-23T21:18:46.307 回答