This question already has answers here:
Get list on basis of dropdownlist data in asp.net mvc3
                                
                                    (1个答案)
                                
                        
                        
                            Building dynamic lambda predicate with short date
                                
                                    (1个答案)
                                
                        
                                6年前关闭。
            
                    
以罗斯文为例。

我的目标是使用Linq到Entity来动态搜索雇员。

我的表情也许是:

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


在这里,运算符'>'在运行时由combobox选择,并且可以是'','contains'等。

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

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

任何答案表示赞赏。

最佳答案

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

调用您的类Operator,执行该操作的代码将变为:

var op = dropDown.SelectedItem as Operator;

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

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

10-12 12:49