【发布时间】:2019-08-19 05:18:36
【问题描述】:
我使用 System.Linq.Dynamic 来查询具有动态“where”表达式的实体。我正在查询具有字符串类型属性“newValue”的对象。示例值为:“{\"ProcessId\":764, \"ProcessLength\":1000}"。 我不能使用 == 因为我想找到属性包含“ProcessId:764”的所有命中,而不管字符串的其余部分。问题是,存储的字符串包含转义符号“\”和双引号,我无法弄清楚它到底应该是什么样的......
dbContext.Processes.Where("@newValue.Contains(\"ProcessId\":764\")") 带来错误,但 dbContext.Processes.Where("@newValue.Contains(\":764\")") 工作正常。我想它一定是我的查询中带有反斜杠或双引号的东西,但我自己无法弄清楚..
【问题讨论】:
-
如果我没记错的话,这个
.Contains(\":764\")表示它会在newValue 中寻找这个":764"。 -
您可能需要双反斜杠才能在最终的
Contains字符串中得到一个。 -
@Simo 没错,它在 newValue 中寻找“:764”。 @NetMage 我尝试了双重反冲,这很有意义,但令人惊讶的是它没有找到任何匹配的项目。我尝试了
dbContext.Processes.Where("@newValue.Contains(@newValue.Contains(\"ProcessId\\\":764\")\")\",但它会导致 System.Linq.Dynamic.ParseException 出现消息“')' 或 ',' 预期"
标签: c# linq escaping dynamic-linq system.linq.dynamic