static Expression <Func <T, bool> > Custom_Expression_Common <T>(ExpressionEventHandler handler, string columnNames, params object[] values) { BinaryExpression filter = Expression.Equal(Expression.Constant(1), Expression.Constant(1)); var columns = columnNames.Split(','); var param = Expression.Parameter(typeof(T)); for (int i = 0; i < columns.Length; i++) { if (values[i] == null) { continue; } string columnName = columns[i].ToString(); var value = values[i]; Expression left = Expression.Property(param, typeof(T).GetProperty(columnName)); Expression right = Expression.Constant(value, value.GetType()); Expression result = handler(left, right); filter = Expression.And(filter, result); } return(Expression.Lambda <Func <T, bool> >(filter, param)); }
public BaseObserver(Control ctrl) { this.ExpressionChangedEvent += new ExpressionEventHandler(Observer_ExpressionChangedEvent); this._ctrl = ctrl; }