【问题标题】:OrmLite/MySql/SqlExpressionVisitor - need "like" clauseOrmLite/MySql/SqlExpressionVisitor - 需要“like”子句
【发布时间】:2012-10-16 19:08:11
【问题描述】:

我是 LINQ 和 OrmLite/MySql 的新手。我有一个需要导致 where 子句的服务请求参数:

`Name` LIKE '%something%' OR `Name` LIKE '%something%else%'

我知道我可以通过以下方式创建 IN()= 子句:

ev.Where(rn => Sql.In(rn.Name, request.Name));  // Assuming an array here
ev.Where(rn => rn.Name== request.Name));

但我似乎找不到可以让我构建LIKE 的构造。另外,Name 实际上是一个别名,所以我尽量避免手动构造 where 子句。

【问题讨论】:

    标签: servicestack ormlite-servicestack


    【解决方案1】:

    您可以使用Contains 构建该特定示例,即:

    ev.Where(rn => rn.Contains(rn.Name, "something") 
        || rn.Contains(rn.Name, "something%else"));
    

    StartsWithEndsWith 通常在 LINQ 中用于生成仅一端带有通配符的 LIKE 子句(但似乎 MySql 方言定义了 StartsWith 有点 differently,可能是为了提高效率。)

    您可以检查默认方言 source code 以确认为 EndsWithContains 生成的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      • 2021-02-15
      相关资源
      最近更新 更多