具有DateTime.Month谓词的ServiceStack.OrmLite

时间:2013-11-18 21:02:51

标签: predicate ormlite-servicestack

使用ServiceStack.OrmLite 3.9.70.0时,并遵循ServiceStack.OrmLite wiki中的一些示例。

我正在尝试选择LastActivity日期月份= 1的行。

我一直收到错误:

{"variable 'pp' of type 'Author' referenced from scope '', but it is not defined"}

LastActivity是一个可以为空的DateTime,定义如下:

public DateTime ? LastActivity { get; set;}

我试过了:
db.Select<Author>(q => q.LastActivity.Value.Month == 1);

var visitor = db.CreateExpression<Author>();
db.Select<Author>(visitor.Where(q => q.LastActivity.Value.Month == 1));

SqlExpressionVisitor<Author> ev = OrmLiteConfig.DialectProvider.ExpressionVisitor<Author>();
db.Select<Author>(ev.Where(q => q.LastActivity.Value.Month == 1));

var predicate = ServiceStack.OrmLite.PredicateBuilder.True<Author>();
predicate = predicate.And(q => q.LastActivity.Value.Month == 1);
db.Select<Author>(predicate);

我试图避免在select中使用sql字符串,因为我喜欢对字段名称和类型进行编译时检查。

1 个答案:

答案 0 :(得分:0)

在日期字段IE

上做一个小于和多于
LastActivity >= variableThatHoldsStartDateOfMonth && LastActivity <= VariableThatHoldsLastDayOfMOnth.   

这将为您提供整月的结果