2013-11-18 6 views
0

Используя ServiceStack.OrmLite 3.9.70.0 и следуя некоторым примерам из ServiceStack.OrmLite wiki.ServiceStack.OrmLite с DateTime.Month Predicate

Я пытаюсь выбрать строки, где дата 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);

Я т чтобы избежать использования строки sql в элементе выбора, потому что мне нравится проверка времени компиляции имен полей и типов.

ответ

0

сделать меньше и больше, чем на поле даты IE

LastActivity >= variableThatHoldsStartDateOfMonth && LastActivity <= VariableThatHoldsLastDayOfMOnth. 

Это даст вам результаты в течение всего месяца