127
Expression GenerateEqual(Expression left, Expression right) {
return Expression.Equal(left, right);
}
Expression GenerateNotEqual(Expression left, Expression right) {
return Expression.NotEqual(left, right);
}
Expression GenerateGreaterThan(Expression left, Expression right) {
if (left.Type == typeof(string)) {
return Expression.GreaterThan(
GenerateStaticMethodCall("Compare", left, right),
Expression.Constant(0)
);
}
return Expression.GreaterThan(left, right);
}
Expression GenerateGreaterThanEqual(Expression left, Expression right) {
if (left.Type == typeof(string)) {
return Expression.GreaterThanOrEqual(
GenerateStaticMethodCall("Compare", left, right),
Expression.Constant(0)
);
}
return Expression.GreaterThanOrEqual(left, right);
}
Expression GenerateLessThan(Expression left, Expression right) {
if (left.Type == typeof(string)) {
return Expression.LessThan(
GenerateStaticMethodCall("Compare", left, right),
Expression.Constant(0)
);
}
return Expression.LessThan(left, right);
}
Expression GenerateLessThanEqual(Expression left, Expression right) {
if (left.Type == typeof(string)) {
return Expression.LessThanOrEqual(
GenerateStaticMethodCall("Compare", left, right),
Expression.Constant(0)
);
}
return Expression.LessThanOrEqual(left, right);
}
Expression GenerateAdd(Expression left, Expression right) {
if (left.Type == typeof(string) && right.Type == typeof(string)) {
return GenerateStaticMethodCall("Concat", left, right);
}
return Expression.Add(left, right);
}
Expression GenerateSubtract(Expression left, Expression right) {
return Expression.Subtract(left, right);