ServiceStack OrmLite - использование типа String для> и <выражений

У меня есть следующий класс POCO, где Date определяется как строка и всегда будет соответствовать следующему формату 'yyyyMMdd'

public class Price {
    [AutoIncrement]
    public int Id {get;set;}

    public string Date {get;set;}
    public decimal Price {get;set;}
}

Я хотел бы выполнить запрос OrmLite с использованием Linq, который извлекает все цены с датой, большей или равной определенной строке запроса параметра PriceDateGreaterThan.

то есть.

var prices = Db.Select<Price>().Where(ar => ar.PriceDate >= request.PriceDateGreaterThan).ToList();

Учитывая, что PriceDate и PriceDateGreaterThan имеют тип string (а не int или DateTime), как я могу выполнить этот запрос с помощью OrmLite?

1 ответ

Решение

Поскольку BCL.NET не определяет операторы сравнения для String (например <=,<,>,=>) вы не можете использовать типизированный API для этого, поэтому вам нужно будет использовать пользовательский SQL, например:

var q = Db.From<Price>();
q.Where(q.Column<Price>(x => x.Date) + " >= {0}", priceDateGreaterThan);

var prices = db.Select(q);
Другие вопросы по тегам