7

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

4

1 回答 1

3

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

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

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

您可以检查默认方言源代码以确认为EndsWith和生成的内容Contains

于 2012-10-20T02:25:02.967 回答