public static Func <TSource, object, bool> GetComparer <TSource>(Expression <Func <TSource, object> > propertyLambda, ComparaisonOperator oper = ComparaisonOperator.Equal) { var returnType = GetPropertyInfos <TSource>(propertyLambda).Last().DataType; Func <TSource, object> realLambda = propertyLambda.Compile(); return(Function.Create() .WithParameter <TSource>("source") .WithParameter <object>("toCompare") .WithBody( CodeLine.CreateVariable(returnType, "toCompareCast"), CodeLine.CreateVariable <bool>("returnVariable"), CodeLine.Assign("toCompareCast", Operation.Cast("toCompare", returnType)), CodeLine.Assign("returnVariable", Condition.Compare("toCompareCast", Operation.Cast( Operation.Func <TSource, object>(realLambda, Operation.Variable("source")), returnType), oper)) ) .Returns("returnVariable") .ToLambda <Func <TSource, object, bool> >()); }
public BinaryCondition(IOperation lValue, IOperation rValue, ComparaisonOperator comparaison) { LValue = lValue; RValue = rValue; Comparaison = comparaison; }
public static Condition CompareConst(string lVariableName, object rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal) { return Compare(Operation.Variable(lVariableName), Operation.Constant(rValue), comparaison); }
public static Condition CompareConst(IOperation lValue, object rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal) { return Compare(lValue, Operation.Constant(rValue), comparaison); }
public static Condition Compare(string lVariableName, IOperation rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal) { return Compare(Operation.Variable(lVariableName), rValue, comparaison); }
public static Condition Compare(IOperation lValue, IOperation rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal) { return new BinaryCondition(lValue, rValue, comparaison); }
public static Condition CompareConst(IOperation lValue, object rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal) { return(Compare(lValue, Operation.Constant(rValue), comparaison)); }
public static Condition Compare(IOperation lValue, string rVariableName, ComparaisonOperator comparaison = ComparaisonOperator.Equal) { return Compare(lValue, Operation.Variable(rVariableName), comparaison); }
public static Condition CompareConst(string lVariableName, object rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal) { return(Compare(Operation.Variable(lVariableName), Operation.Constant(rValue), comparaison)); }
public static Condition Compare(IOperation lValue, IOperation rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal) { return(new BinaryCondition(lValue, rValue, comparaison)); }
public static Condition Compare(string lVariableName, IOperation rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal) { return(Compare(Operation.Variable(lVariableName), rValue, comparaison)); }
public static Condition Compare(IOperation lValue, string rVariableName, ComparaisonOperator comparaison = ComparaisonOperator.Equal) { return(Compare(lValue, Operation.Variable(rVariableName), comparaison)); }