如何使用实体框架过滤字符串日期列上的记录

时间:2016-08-20 10:37:42

标签: c# entity-framework linq

我有一个具有DueDate列的SQL Server数据库表。此列的数据类型为nvarchar(50),因此它将日期值作为字符串保存到此列中。

我正在使用实体框架从此表中获取记录。我的要求是只获取DueDate已经过去的记录,即DueDate< = TodaysDate的记录。但由于Linq to Entities不支持Covert.ToString()或Covert.ToDateTime()方法,因此我无法将DueDate值与今天的日期值进行比较。

请帮助我解决这个问题。

提前致谢。

2 个答案:

答案 0 :(得分:0)

尝试将字符串解析为日期类型,如下所示: 我将当前日期存储在一个字符串中(假设它就像你从数据库中读取日期作为一个字符串),然后我将它解析为一个日期时间对象。

string StringDate = DateTime.Now.ToString();
DateTime Date = DateTime.Parse(StringDate);

答案 1 :(得分:0)

试试这个。

DateTime startDate = DateTime.Now;
string dateToCompare = startDate.ToString("dd/MM/yyyy");
var result = from Table in context.Table where Table.DueDate.CompareTo(dateToCompare) <= 0 
        select Table.ID;
List<int> resultBrands = result.ToList(); // it should be select just Table but I will show the results to be clear.

这是结果,(我使用测试数据库)

enter image description here

希望有所帮助,