【发布时间】:2014-06-11 14:15:15
【问题描述】:
我必须将日历中选择的日期(startdat 和 enddat)与我的 SQL 2008 R2 DB 中的日期进行比较。我必须用 LINQ 编写它,但在我的视图中,DateTime 被转换为字符串(Varchar),所以我必须在我的 LINQ 查询中将它转换回 DateTime。我的基本查询现在看起来像这样:
var reportlist = (from r in context.Monthly_Report
where r.CreateDate >= startdat && r.CreateDate <= enddat
select r.Ticketnumber).ToList();
所以我得到的CreateDate 是String,为了比较我必须转换它。我已经用Convert.ToDateTime() 尝试过,但是 L2E 存在问题。
那么我怎样才能像在 SQL 脚本中那样转换它,或者 SQL 知道我的意思呢?
感谢我得到的每一个帮助。 (顺便说一句,我不允许更改视图)
【问题讨论】:
-
有什么办法可以改变视图吗?这不仅仅是 LINQ 的问题 - 从根本上说,如果字段是日期,它不应该作为字符串返回。
-
@mxmissile 有人做出了糟糕的设计决定,所以现在你主张解雇他们?你不觉得这有点苛刻吗?显然这是一个坏主意,但每个人在学习时都会遇到很多坏主意
-
@JonSkeet 据我了解,OP 已将日期作为字符串存储在数据库中
-
您可以创建另一个代理视图,将字符串转换回日期
-
你可以尝试使用EntityFunctions.CreateDateTime,但是会很丑
标签: c# asp.net sql linq entity-framework