Linq动态有双引号的问题 [英] Linq dynamic having issue with double quote

查看:70
本文介绍了Linq动态有双引号的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用System.Linq.Dynamic; 来生成动态linq查询,该查询从数据库上下文中获取记录.

I am using System.Linq.Dynamic; to generate dynamic linq query which featch records from db context.

我为动态linq生成字符串格式的where子句,如果输入没有任何双引号,它会完美地工作.但是,一旦输入字符串包含双引号,它将引发错误.

I generate where clause in string format for dynamic linq, It works perfectly if input does not have any double quote. However, it throws error once input string contains double quote.

我遵循了Stack Overflow现有解决方案 dynamiclinq-escaping-double-quotes-inside-strings,但这没有帮助,因为我想使用LIKE运算符.

I followed Stack Overflow existing solution dynamiclinq-escaping-double-quotes-inside-strings but it does not helped because I wanted to use LIKE operator.

我在where子句中使用了包含条件,因为我需要LIKE运算符进行查询.请遵循以下示例代码...

I'm using Contains condition in my where clause because I need LIKE operator for query. Please follow below sample code...

//name should contains  "6"" WHITE COLOR

var whereClause = "(!flag.Contains(\"D\")) AND (Name.Contains(\"\"6\"\" WHITE COLOR\"\"))";

var result = context.Product.Where(whereClause).ToList();

一旦我执行了上面的查询,它就会以')'或操作符期望的方式抛出错误.但是按照上述where子句,看起来所有括号都很好,不确定动态查询dll是否存在任何问题.

Once I execute above query it throws error as ')' or operator expected. But as per above where clause it looks all bracket are fine not sure is it any issue with dynamic query dll.

谢谢您的任何建议.

推荐答案

您需要转义转义符号 \ .

//name should contains  "6"" WHITE COLOR

var whereClause = "(!flag.Contains(\"D\")) AND (Name.Contains(\"\\\"6\\\"\\\" WHITE COLOR\"))";

var result = context.Product.Where(whereClause).ToList();

或使用参数化.

//name should contains  "6"" WHITE COLOR

var flag = "\"D\"";
var name = "\"6\"\" WHITE COLOR";
var whereClause = "(!flag.Contains(@0)) AND (Name.Contains(@1))";

var result = context.Product.Where(whereClause, @0, @1).ToList();

这篇关于Linq动态有双引号的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆