我有一个包含内容的数据库,旨在非常通用。其中一列是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中的日期进行比较吗?
谢谢!
答案 0 :(得分:0)
解决方式如下:
var result = context.MetaTags.Where(mt => SqlFunctions.DateDiff("s", mt.MetaTagFilter1, keyValueMetaTagFilter.MetaTagValue) <= 0);
日期必须以“YYYY-MM-DD”格式存储在数据库中。