Linq 动态查询问题 - 运算符“或”与操作数类型“布尔”和“字符串”不兼容
Posted
技术标签:
【中文标题】Linq 动态查询问题 - 运算符“或”与操作数类型“布尔”和“字符串”不兼容【英文标题】:Linq Dynamic Query Issue - Operator 'OR' incompatible with operand types 'Boolean' and 'String' 【发布时间】:2017-11-19 16:13:21 【问题描述】:我目前正在尝试在 Linq 中定义动态查询,但收到以下错误:
我的查询如下:
valuesList = valuesList.Where("(position=1 OR value LIKE '%3%')")
我做错了什么?
【问题讨论】:
【参考方案1】:试试这个- 您不能在 linq 语句中传递字符串
valuesList = valuesList.Where(x=>x.position == 1 || x.value.Contains(3))
【讨论】:
我在 linq 语句中使用字符串的原因是因为您可以看到我的查询有两个条件,但在某些情况下我希望它只考虑其中一个条件。这可以使用动态 linq 来实现吗? 创建一个 if else 条件。查看查询是否包含一个,以及查询是否包含其他。 为什么不看看使用 IQueryable 方法动态“构建”您的查询? 另外,为了快速修复,只需在原始查询中添加更多括号,但最好的方法是使用动态字符串。以上是关于Linq 动态查询问题 - 运算符“或”与操作数类型“布尔”和“字符串”不兼容的主要内容,如果未能解决你的问题,请参考以下文章