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);