我正在尝试检索包含“Britney Spears”的字符串列表,这就是我使用的
from p in Objects
where p.Title.Contains("Britney Spears")
select p
这很好,但是如果我想选择“Britney Jean Spears”,“Britney'Sexy'Spears”这样的标题它不起作用,那么我的问题是我如何在两者之间插入一个通配符'%'布兰妮斯皮尔斯在进行LINQ2SQL搜索时?感谢。
此致 安迪。
答案 0 :(得分:13)
您可以使用SqlMethods.Like
方法来实现此目的。
from p in Objects
where SqlMethods.Like(p.Title, "Britney% Spears")
select p
答案 1 :(得分:0)
只需使用StartsWith()
和EndsWith()
来模拟模式。 AFAIK,LINQ-to-SQL不支持通配符。
from p in Objects
where p.Title.StartsWith("Britney") && c.Title.EndsWith("Spears")
select p;
否则,如果您的模式更复杂,则可以直接执行查询。
db.ExecuteQuery<MyObject>("SELECT * "
+ "FROM Objects "
+ "WHERE Title LIKE 'Britney%Spears'");
答案 2 :(得分:-1)
完全按照你的直接SQL
进行操作您可以使用like
子句提供特殊字符,例如“。”,“%”和“[]”
如果这还不够好,那么你可以使用正则表达式,但要小心,因为正则表达式将被执行“客户端” - 即,它将获取整个事物,然后尝试将结果缩小到内存中。你可以通过
来优化zerkms的方法from p in Objects
where p.Title.Contains("Britney") && p.Title.Contains("Spears") && regex.Match(p.Title).Success
select p
我还没有对它进行测试,但它应该在SQL服务器端运行前两个条件,然后使用正则表达式缩小范围。