在以查询字符串开头时比较EntitySQL中的DateTime值

sra*_*sra 3 .net c# entity-framework entity-sql query-builder

我使用QueryBuilder如下:

var queryString = String.Format(
    "SELECT VALUE e FROM Entity AS e WHERE e.EndDate {0} {1} ",
    operator,
    DateTime.Today.AddYears(1).ToString("d", DateTimeFormatInfo.InvariantInfo)
);
ObjectQuery<Entity> query = new ObjectQuery<Entity>(queryString, Context);
Run Code Online (Sandbox Code Playgroud)

请注意,我非常简化了这个示例,我的目标是在创建QueryBuilder实例之前将查询构建为字符串.(只要这是可能的)

我已经尝试了以下内容

...DateTime.Today.AddYears(1)...
...DateTime.Today.AddYears(1).ToString()...
...DateTime.Today.AddYears(1).ToString("yyy\MM\dd")...
Run Code Online (Sandbox Code Playgroud)

这都导致一个异常,说我要么无法将DateTime与String或Int32进行比较.

我开始问我这种方法是否可行......

Enr*_*lio 5

在Entity SQL中,DateTime文字必须以下列格式表示:

DATETIME'2012-02-02 16:26'
Run Code Online (Sandbox Code Playgroud)

其中日期和时间部分都是强制性的.例如:

"SELECT VALUE e FROM Entity AS e WHERE e.EndDate > DATETIME'2012-02-02 16:26'"
Run Code Online (Sandbox Code Playgroud)