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;
 }
Пример #3
0
		public static Condition CompareConst(string lVariableName, object rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal)
		{
			return Compare(Operation.Variable(lVariableName), Operation.Constant(rValue), comparaison);
		}
Пример #4
0
		public static Condition CompareConst(IOperation lValue, object rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal)
		{
			return Compare(lValue, Operation.Constant(rValue), comparaison);
		}
Пример #5
0
		public static Condition Compare(string lVariableName, IOperation rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal)
		{
			return Compare(Operation.Variable(lVariableName), rValue, comparaison);
		}
Пример #6
0
		public static Condition Compare(IOperation lValue, IOperation rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal)
		{
			return new BinaryCondition(lValue, rValue, comparaison);
		}
Пример #7
0
 public static Condition CompareConst(IOperation lValue, object rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal)
 {
     return(Compare(lValue, Operation.Constant(rValue), comparaison));
 }
Пример #8
0
		public static Condition Compare(IOperation lValue, string rVariableName, ComparaisonOperator comparaison = ComparaisonOperator.Equal)
		{
			return Compare(lValue, Operation.Variable(rVariableName), comparaison);
		}
Пример #9
0
 public static Condition CompareConst(string lVariableName, object rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal)
 {
     return(Compare(Operation.Variable(lVariableName), Operation.Constant(rValue), comparaison));
 }
Пример #10
0
 public static Condition Compare(IOperation lValue, IOperation rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal)
 {
     return(new BinaryCondition(lValue, rValue, comparaison));
 }
Пример #11
0
 public static Condition Compare(string lVariableName, IOperation rValue, ComparaisonOperator comparaison = ComparaisonOperator.Equal)
 {
     return(Compare(Operation.Variable(lVariableName), rValue, comparaison));
 }
Пример #12
0
 public static Condition Compare(IOperation lValue, string rVariableName, ComparaisonOperator comparaison = ComparaisonOperator.Equal)
 {
     return(Compare(lValue, Operation.Variable(rVariableName), comparaison));
 }
Пример #13
0
		public BinaryCondition(IOperation lValue, IOperation rValue, ComparaisonOperator comparaison)
		{
			LValue = lValue;
			RValue = rValue;
			Comparaison = comparaison;
		}