比较LINQ中的日期,这些日期存储为数据库

时间:2015-04-27 19:22:35

标签: c# linq entity-framework

我有一个包含内容的数据库,旨在非常通用。其中一列是MetaTag1,类型为nvarchar(255),其中包含字符串格式的日期。我无法将其更改为DateTime类型。我首先使用Entity Framework代码用LINQ查询表。

现在我必须做一些事情:

 var dateAsString = "12/04/2015";
 var result = context.MetaTags.Where(mt => DateTime.Parse(dateAsString) > DateTime.Parse(mt.MetaTag1));

这不起作用,因为我得到了例外:

 'LINQ to Entities does not recognize the method 'System.DateTime Parse(System.String)' method, and this method cannot be translated into a store expression.'

一种解决方案是首先使用ToList()在内存中实现结果,然后在LINQ中对实体进行过滤。但这意味着必须首先检索所有结果。

还有另一种方法可以将字符串作为LINQ中的日期进行比较吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

解决方式如下:

 var result = context.MetaTags.Where(mt => SqlFunctions.DateDiff("s", mt.MetaTagFilter1, keyValueMetaTagFilter.MetaTagValue) <= 0);

日期必须以“YYYY-MM-DD”格式存储在数据库中。