2

以北风为例。

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

我的表情可能是:

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

这里的操作符'>'是在运行时被combobox选中的,可能是'<'、'='、'<>'、'contains'等等。

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

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

任何答案表示赞赏。

4

2 回答 2

0

如果 lambda 中的条件对您来说不美观,您可以使用函数

Expression<Func<Employee, bool>> exp= em => foo(em, otherParam);

public static bool foo(Employee em, otherType otherParam)
{
    ...
}
于 2013-08-28T16:05:05.360 回答
0

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

调用您的 class Operator,您执行操作的代码变为:

var op = dropDown.SelectedItem as Operator;

if (op != null)
{
  op.Function(employee);
}
于 2013-08-28T16:11:09.457 回答