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 动态查询问题 - 运算符“或”与操作数类型“布尔”和“字符串”不兼容的主要内容,如果未能解决你的问题,请参考以下文章

using System.Linq ;啥意思

C# 动态Linq 建立模糊查询通用工具类

表达式树与委托

Linq之关键字基本查询

LINQ to Object——延时执行的Enumerable类方法

LINQ 查询中使用的 C# 三元运算符