代码之家  ›  专栏  ›  技术社区  ›  aryaxt

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

  •  2
  • aryaxt  · 技术社区  · 12 年前

    在我的表中有一个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 回复  |  直到 12 年前
        1
  •  2
  •   Sergey Kalinichenko    12 年前

    您可以尝试使用 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