Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 用于短语的类LINQ2SQL命令_.net_Linq_Linq To Sql - Fatal编程技术网

.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
。哦,这是一个更好的选择。感谢堆,这非常有用。