【问题标题】:ServiceStack OrmLite - using String type for > and < expressionsServiceStack OrmLite - 对 > 和 < 表达式使用字符串类型
【发布时间】:2018-05-09 12:49:10
【问题描述】:

我有以下 POCO 类,其中 Date 定义为字符串,并且始终符合以下格式 'yyyyMMdd'

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

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

我想使用 Linq 运行 OrmLite 查询,该查询检索日期大于或等于某个请求字符串 PriceDateGreaterThan 参数的所有价格。

即。

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

鉴于 PriceDate 和 PriceDateGreaterThan 都是字符串类型(& 不是 int 或 DateTime),我如何使用 OrmLite 运行此查询?

【问题讨论】:

  • 如果它们都是字符串,则查询将只是进行字符串比较。当前查询有什么问题?
  • 运算符'>='不能应用于类型'string'和'string'
  • 这里是示例代码:gistlyn.com/…
  • 那个链接是原始的 Gistlyn 要点,我想你忘了按保存。

标签: ormlite-servicestack


【解决方案1】:

由于 .NET 的 BCL 没有为 String(例如 &lt;=,&lt;,&gt;,=&gt;)定义比较运算符,因此您不能为此使用类型化 API,因此您需要使用自定义 SQL,例如:

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

var prices = db.Select(q);

【讨论】:

    猜你喜欢
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多