.net 用于短语的类LINQ2SQL命令
我试图检索一个包含“布兰妮·斯皮尔斯”的字符串列表,这就是我使用的.net 用于短语的类LINQ2SQL命令,.net,linq,linq-to-sql,.net,Linq,Linq To Sql,我试图检索一个包含“布兰妮·斯皮尔斯”的字符串列表,这就是我使用的 from p in Objects where p.Title.Contains("Britney Spears") select p 这很好,但如果我想选择标题“布兰妮·吉恩·斯皮尔斯”,“布兰妮性感”斯皮尔斯,它不起作用,所以我的问题是,在执行LINQ2SQL搜索时,如何在布兰妮·斯皮尔斯之间插入通配符“%”?谢谢 问候,, Andy。完全按照使用直接SQL的方式执行 您可以在中提供特殊字符,例如“.”、“%”和“[]”
from p in Objects
where p.Title.Contains("Britney Spears")
select p
这很好,但如果我想选择标题“布兰妮·吉恩·斯皮尔斯”,“布兰妮性感”斯皮尔斯,它不起作用,所以我的问题是,在执行LINQ2SQL搜索时,如何在布兰妮·斯皮尔斯之间插入通配符“%”?谢谢
问候,,
Andy。完全按照使用直接SQL的方式执行 您可以在
中提供特殊字符,例如“.”、“%”和“[]”
如果这还不够好,那么您可以使用regex,但要小心,因为regex将在“客户端”执行,即它将获取整个内容,然后尝试缩小内存中的结果范围。您可以通过执行以下操作在某种程度上优化zerkms的方法
from p in Objects
where p.Title.Contains("Britney") && p.Title.Contains("Spears") && regex.Match(p.Title).Success
select p
我还没有测试它,但它应该在SQL server端运行前两个条件,然后使用regex缩小范围。只需使用StartsWith()
和EndsWith()
来模拟模式。好的,LINQtoSQL不支持通配符
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'");
db.ExecuteQuery(“选择*”
+“来自对象”
+“像‘布兰妮·斯皮尔斯’这样的头衔在哪里”;
您可以使用此方法进行此操作
from p in Objects
where SqlMethods.Like(p.Title, "Britney% Spears")
select p
这不适用于Linq2Sql;在应用正则表达式之前,您必须调用AsEnumerable
。哦,这是一个更好的选择。感谢堆,这非常有用。