我是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子句。
答案 0 :(得分:3)
您可以使用Contains
构建该特定示例,即:
ev.Where(rn => rn.Contains(rn.Name, "something")
|| rn.Contains(rn.Name, "something%else"));
StartsWith
和EndsWith
通常在LINQ中用于仅在一端生成带有通配符的LIKE
子句(但它确实显示MySql方言在某种程度上定义StartsWith
{ {3}},可能有效率。)
您可以查看默认方言differently,以确认为EndsWith
和Contains
生成的内容。