【发布时间】:2020-01-24 16:39:35
【问题描述】:
我是 using System.Linq.Dynamic; 来生成动态 linq 查询,从数据库上下文中提取记录。
我为动态 linq 生成字符串格式的 where 子句,如果输入没有任何双引号,它可以完美地工作。但是,一旦输入字符串包含双引号,它就会抛出错误。
我关注了 Stack Overflow 现有解决方案 dynamiclinq-escaping-double-quotes-inside-strings,但它没有帮助,因为我想使用 LIKE 运算符。
我在 where 子句中使用 Contains 条件,因为我需要 LIKE 运算符进行查询。请按照下面的示例代码...
//name should contains "6"" WHITE COLOR
var whereClause = "(!flag.Contains(\"D\")) AND (Name.Contains(\"\"6\"\" WHITE COLOR\"\"))";
var result = context.Product.Where(whereClause).ToList();
一旦我执行上面的查询,它就会抛出')' or operator expected 的错误。但是根据上面的 where 子句,它看起来所有的括号都很好,不确定动态查询 dll 是否有任何问题。
感谢您的建议。
【问题讨论】:
标签: sql-server linq dynamic dynamic-linq