Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
C# 当where子句包含双引号特殊字符时,Linq to SQL失败_C#_Linq_Linq To Sql - Fatal编程技术网

C# 当where子句包含双引号特殊字符时,Linq to SQL失败

C# 当where子句包含双引号特殊字符时,Linq to SQL失败,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,团队 我有一个Linq到SQL查询,它将从数据库中获取项目列表。这对大多数特殊字符都很好,但当我使用双引号时,它会失败,并根据输入产生不同的错误 未终止字符串文字 需要表达 “)”或“,”预期 我有一个组合框,它将查找数据库表中4列(要查找的列是可配置的)中的搜索文本,所以我们形成如下动态查询 例如,搜索文本是ABC 我们有一个foreach来获取我们应该检查的所有列列表,下面的查询是通过连接形成的 dynamicQuery = "(Column1.Contains(\"

团队

我有一个Linq到SQL查询,它将从数据库中获取项目列表。这对大多数特殊字符都很好,但当我使用双引号时,它会失败,并根据输入产生不同的错误

  • 未终止字符串文字
  • 需要表达
  • “)”或“,”预期
我有一个组合框,它将查找数据库表中4列(要查找的列是可配置的)中的搜索文本,所以我们形成如下动态查询

例如,搜索文本是ABC 我们有一个foreach来获取我们应该检查的所有列列表,下面的查询是通过连接形成的

dynamicQuery = "(Column1.Contains(\"ABC\") OR Column2.Contains(\"ABC\") OR Column3.Contains(\"ABC\") OR Column4.Contains(\"ABC\")"
如果我在搜索文本中给出双引号,则C#会正确转义。双引号替换为反斜杠+双引号,仍然失败

from rangeVariable in DatabaseTable
where(dynamicQuery)
真实场景查询有更多的业务逻辑,但为了保持简单,我使用上面的示例

注意:我尝试将“\替换为空字符,效果很好。 我知道regex忽略双引号/防止输入双引号是其他选项。 但我的要求是接受任何用户输入,但提供匹配的项目。我想支持双引号特殊字符也。
-使用参数化看起来很有希望,但我无法使用此建议,因为在形成动态查询时,它会将column1.contains转换为false。

所有c#字符串常量都必须转义。如何将字符串转换为sql?请尝试以下操作:@“(column1.contains(““ABC”)或Column2.contains(““ABC”)或Column3.contains(““ABC”)或Column4.Contains(““ABC”)LINQ to SQL不支持where子句作为字符串-您使用什么技术/库来实现这一点?