以北风为例。
我的目标是使用 Linq to Entity 动态搜索员工。
我的表情可能是:
Expression<Func<Employee, bool>> exp= em => em.EmployeeID > 2;
这里的操作符'>'
是在运行时被combobox选中的,可能是'<'、'='、'<>'、'contains'等等。
我的问题是,如何使用选定的运算符动态构建表达式?
一件重要的事情是,不允许选择性语句,例如“if”和“switch”。
任何答案表示赞赏。
以北风为例。
我的目标是使用 Linq to Entity 动态搜索员工。
我的表情可能是:
Expression<Func<Employee, bool>> exp= em => em.EmployeeID > 2;
这里的操作符'>'
是在运行时被combobox选中的,可能是'<'、'='、'<>'、'contains'等等。
我的问题是,如何使用选定的运算符动态构建表达式?
一件重要的事情是,不允许选择性语句,例如“if”和“switch”。
任何答案表示赞赏。
如果 lambda 中的条件对您来说不美观,您可以使用函数
Expression<Func<Employee, bool>> exp= em => foo(em, otherParam);
public static bool foo(Employee em, otherType otherParam)
{
...
}
我将创建一个类,该类具有Func<Employee, bool>
并覆盖该ToString
方法以表示该函数正在使用的运算符。然后,我会使用ObservableCollection
那个类的一个作为ItemsSource
你的ComboBox
.
调用您的 class Operator
,您执行操作的代码变为:
var op = dropDown.SelectedItem as Operator;
if (op != null)
{
op.Function(employee);
}