servicestack - OrmLite/MySql/SqlExpressionVisitor - 需要 "like"子句

标签 servicestack ormlite-servicestack

我是 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 子句。

最佳答案

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

ev.Where(rn => rn.Contains(rn.Name, "something") 
    || rn.Contains(rn.Name, "something%else"));
StartsWithEndsWith一般用于LINQ生成LIKE仅在一端带有通配符的子句(但确实出现了 MySql 方言定义 StartsWith 有点 differently ,可能是为了提高效率。)

您可以检查默认方言source code确认为 EndsWith 生成了什么和 Contains .

关于servicestack - OrmLite/MySql/SqlExpressionVisitor - 需要 "like"子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12921779/

相关文章:

c# - ServiceStack GetRequestFilterAttributes NullReference

javascript - Bundler 在 Powershell 中工作,但不能作为构建后事件

ServiceStack 自动查询到自定义 DTO

authentication - 如何使用 ServiceStack 对 Web 浏览器请求进行基本身份验证?

c# - 如何对使用 Servicestack Funq IOC 的 DBService 进行单元测试

c# - ServiceStack 拦截请求/响应以进行验证

c# - 从数据库 SQLite C# 服务堆栈读取 SQL 数据(百万条记录)的最快方法是什么

ormlite-servicestack - 我如何在 ServiceStack Ormlite 中计数(DISTINCT)?

mysql - DateTime 的 ServiceStack ORMLite SqlList 问题

c# - 在 SQL Server 2008 R2 Express 中使用 ServiceStack.OrmLite 的 Unicode 字符串