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

将字符串解析为表达式中的DateTimeOffset

  •  1
  • NoizWaves  · 技术社区  · 15 年前

    Expression<Func<T, bool>> 其中,字符串属性被转换/转换为DateTimeOffset,以便可以对其执行DateTimeOffset操作。

    我们使用Linq2SQL作为数据提供程序,它支持将字符串转换为DateTimeOffset的SQL等价物。理想情况下,我希望表达式直接在IQueryable数据源中计算,而不是作为IEnumerable在内存中计算。

    下面是我迄今为止尝试的一个例子:

    public class MyClass
    {
        public string MyValue;
    }
    
    Expression<Func<MyClass, bool>> filter = mc => DateTimeOffset.Parse(mc.MyValue) > new DateTimeOffset(2007,1,1);
    

    不幸的是,这个过滤器的定义会导致内存中的计算。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Christian Hayter    15 年前

    因为底层的物理表列是 nvarchar datetime ,我觉得你运气不好。LINQ2SQL提供程序知道它是 nvarchar公司 数据,因此不会生成将其作为 日期时间 价值观。

    老实说,我甚至看不到一个安全的方法来做这与生手制作 SqlCommand String ,然后将其转换为 DateTimeOffset