OrmLite / MySql / SqlExpressionVisitor - 需要“like”子句

时间:2012-10-16 19:08:11

标签: 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子句。

1 个答案:

答案 0 :(得分:3)

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

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

StartsWithEndsWith通常在LINQ中用于仅在一端生成带有通配符的LIKE子句(但它确实显示MySql方言在某种程度上定义StartsWith { {3}},可能有效率。)

您可以查看默认方言differently,以确认为EndsWithContains生成的内容。