EF在linq查询中比较表示SAP日期的字符串?

时间:2013-10-10 20:07:05

标签: .net linq entity-framework sap

在我的表中有一个varchar字段,其中包含日期。 (这就是SAP存储日期的方式) 无论如何要对这个字段运行一个类似于:

的查询
from c in db.Set<MyTable>()
   where c.Date >= "20120921" && c.Date <= "20121021"
   select c

我尝试做一个String.Compare,但EF无法将其转换为sql。

where Stirng.Compare(c.Date, "20120921") >= 0

我还尝试将两个字符串转换为int并进行比较,并且EF不再支持它。

1 个答案:

答案 0 :(得分:2)

您可以尝试使用SqlFunctions.DateDiff方法重载,这需要三个string s,如下所示:

var res = from c in db.Set<MyTable>()
   where SqlFunctions.DateDiff("dd", c.Date, "20120921") >= 0
      && SqlFunctions.DateDiff("dd", c.Date, "20121021") < 0
   select c