在C# Nhibernate开发中使用了linq 查询,我需要对比2个DateTime类型的时间,其中用到DateTime.AddDay(),代码如下:
<code>var patients = from c in session.Query<Patient>() where c.DateAdded.AddDays(1) < c.AdmitDate select c;</code>
但是当程序运行时发生如下异常: System.NotSupportedException {“System.DateTime AddDays(Double)”}
at NHibernate.Linq.Visitors.HqlGeneratorExpressionTreeVisitor.VisitMethodCallExpression(MethodCallExpression expression)
使用foreach遍历,将时间对比作为内部条件时运行正常,例如:
foreach (var model in patients)
{
if(DateAdded.AddDays(1) > c.AdmitDate)continue;//类似的如:AddMinutes
}
最终的方法是先转换为ToList(),然后再用linq。
var pats=session.Query<Patient>().ToList();