c# - 使用动态比较运算符构建 lambda 表达式(谓词)

标签 c# linq entity-framework

<分区>

以罗斯文为例。

我的目标是使用 Linq to Entity 动态搜索员工。

我的表情可能是:

Expression<Func<Employee, bool>> exp= em => em.EmployeeID > 2;

这里的运算符'>'是combobox在运行时选择的,它可能是'<'、'='、'<>'、'contains'等。

我的问题是,如何使用选定的运算符动态构建表达式?

一件重要的事情是,不允许有选择的语句,例如“if”和“switch”。

如有任何答复,我们将不胜感激。

最佳答案

我会创建一个具有 Func<Employee, bool> 的类并覆盖 ToString表示函数正在使用的运算符的方法。然后,我会使用 ObservableCollection该类的 ItemsSource你的ComboBox .

给类(class)打电话 Operator ,执行该操作的代码变为:

var op = dropDown.SelectedItem as Operator;

if (op != null)
{
  op.Function(employee);
}

关于c# - 使用动态比较运算符构建 lambda 表达式(谓词),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18492675/

相关文章:

c# - 使用 C# StreamReader 解析文本文件

c# - 剪刀布石头算法

LINQ:将多个 int 属性连接成一个字符串

entity-framework - ADO.NET Entity Framework : Can I have multiple entity types for the same row

entity-framework - 如何访问 Entity Framework 4.1 中代理类型的底层类型

c# - 无法使用 `new` 关键字从函数修改对象

c# - 使用 LINQ 获取在列表中出现一次的元素的计数

mysql - Entity Framework Core Linq 其中 NULL 不起作用

mysql - Entity Framework 添加不应通过其他对象添加的数据

c# - ListView onScroll 事件