我必须将日历(startdat和enddat)中的选择日期与SQL 2008 R2数据库中的日期进行比较。我必须用LINQ编写它,但在我看来,DateTime被转换为String(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知道我的意思呢?
感谢我得到的每一个帮助。 (顺便说一句,我不允许改变观点)
答案 0 :(得分:3)
您只能在Linq to Entities中使用一组简化的函数。此功能将转换为DB功能。
您可以使用:
这些组中没有一个包含可以从字符串转换为日期时间的函数,因此无法直接执行此操作。
你必须寻找其他选择:
startdat
和enddat
转换为相同的格式,并按字符串(字母)顺序进行比较。答案 1 :(得分:1)
从根本上说,您需要查看返回日期时间。
但是,有几种方法可以做到这一点。
1)您可以将数据作为字符串提取到列表对象中。那你就不会使用L2E。
var temp = (from r in context.Monthly_Report
select new { r.Ticketnumber, r.CreateDate} ).ToList();
var reportList = temp.Where(r =>
Convert.ToDateTime(r.CreateDate) >= startdat &&
Convert.ToDateTime(r.CreateDate) <= enddat)
2)您可以将日期时间转换为字符串值并进行比较。
var reportlist = (from r in context.Monthly_Report
where r.CreateDate.CompareTo(startdatasstring) >= 0 &&
r.CreateDate.CompareTo(enddatasstring) <= 0
select r.Ticketnumber).ToList();