我想从 ENTITY 中读取记录,其中字段 VarCharDate 两个用户输入日期之间。 如果我直接执行sql,它会成功返回两个日期之间的所有记录。
即。
SELECT * FROM ENTITY WHERE VarCharDate BETWEEN '2010-09-01' AND '2012-08-01'
这里的VarCharDate字段是预定义的VARCHAR类型,我无法将其更改为DateTime。 日期格式固定为'YYYY-MM-DD',用于在此字段中存储值。
问题:
编辑: 我正在使用FluentNhibernate for Mapping实体。我还通过配置在应用程序启动时构建架构。
我正在使用Nhibernate Linq来检索我的C#应用程序中的记录。 我试过像:
session.Query<ENTITY>()
.Where(e=>
Convert.ToDateTime(e.VarCharDate) >= Convert.ToDateTime(loInputDateString) &&
Convert.ToDateTime(e.VarCharDate) <= Convert.ToDateTime(hiInputDateString)
).ToList();
执行上述语句会导致运行时错误NotSupportedException。
Google显示有关ExtensionMethods的结果,我发现这一切都令人困惑,因此无法实现。
我怎样才能实现以下目标:
session.Query<ENTITY>(e=> e.VarCharDate.Between(loInputDateString,hiInputDateString)).ToList();
我也尝试过链接中提到的内容 LINQ Between Operator
但它不起作用。
答案 0 :(得分:0)
您没有提到如何映射您的实体(HBM,FluentNHibernate,...)。但是你可以使用TypeConverter。如果可以更改类上的VarCharDate属性定义,则将其更改为DateTime,并让NHibernate将其从字符串转换为DateTime并返回。