2

在我的表中有一个包含日期的 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 也不支持。

4

1 回答 1

2

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

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
于 2013-10-10T20:15:41.610 回答