public bool Compare(FilterTerm term) { if (RubricName != term.RubricName) { return(false); } if (!Value.Equals(term.Value)) { return(false); } if (!Operand.Equals(term.Operand)) { return(false); } if (!Stage.Equals(term.Stage)) { return(false); } if (!Logic.Equals(term.Logic)) { return(false); } return(true); }
public object Clone() { FilterTerm clone = (FilterTerm)this.MemberwiseClone(); clone.FilterRubric = FilterRubric; return(clone); }
private Expression <Func <IFigure, bool> > CaseConditioner(FilterTerm fc, Expression <Func <IFigure, bool> > ex) { if (fc.Value != null) { object Value = fc.Value; OperandType Operand = fc.Operand; if (Operand != OperandType.Like && Operand != OperandType.NotLike) { switch (Operand) { case OperandType.Equal: ex = (r => r[fc.FilterRubric.RubricId] != null ? fc.FilterRubric.RubricType == typeof(IUnique) || fc.FilterRubric.RubricType == typeof(string) || fc.FilterRubric.RubricType == typeof(DateTime) ? r[fc.FilterRubric.RubricId].ComparableInt64(fc.FilterRubric.RubricType).Equals(Value.ComparableInt64(fc.FilterRubric.RubricType)) : r[fc.FilterRubric.RubricId].ComparableDouble(fc.FilterRubric.RubricType).Equals(Value.ComparableDouble(fc.FilterRubric.RubricType)) : false); break; case OperandType.EqualOrMore: ex = (r => r[fc.FilterRubric.RubricId] != null ? fc.FilterRubric.RubricType == typeof(IUnique) || fc.FilterRubric.RubricType == typeof(string) || fc.FilterRubric.RubricType == typeof(DateTime) ? r[fc.FilterRubric.RubricId].ComparableInt64(fc.FilterRubric.RubricType) >= (Value.ComparableInt64(fc.FilterRubric.RubricType)) : r[fc.FilterRubric.RubricId].ComparableDouble(fc.FilterRubric.RubricType) >= (Value.ComparableDouble(fc.FilterRubric.RubricType)) : false); break; case OperandType.More: ex = (r => r[fc.FilterRubric.RubricId] != null ? fc.FilterRubric.RubricType == typeof(IUnique) || fc.FilterRubric.RubricType == typeof(string) || fc.FilterRubric.RubricType == typeof(DateTime) ? r[fc.FilterRubric.RubricId].ComparableInt64(fc.FilterRubric.RubricType) > (Value.ComparableInt64(fc.FilterRubric.RubricType)) : r[fc.FilterRubric.RubricId].ComparableDouble(fc.FilterRubric.RubricType) > (Value.ComparableDouble(fc.FilterRubric.RubricType)) : false); break; case OperandType.EqualOrLess: ex = (r => r[fc.FilterRubric.RubricId] != null ? fc.FilterRubric.RubricType == typeof(IUnique) || fc.FilterRubric.RubricType == typeof(string) || fc.FilterRubric.RubricType == typeof(DateTime) ? r[fc.FilterRubric.RubricId].ComparableInt64(fc.FilterRubric.RubricType) <= (Value.ComparableInt64(fc.FilterRubric.RubricType)) : r[fc.FilterRubric.RubricId].ComparableDouble(fc.FilterRubric.RubricType) <= (Value.ComparableDouble(fc.FilterRubric.RubricType)) : false); break; case OperandType.Less: ex = (r => r[fc.FilterRubric.RubricId] != null ? fc.FilterRubric.RubricType == typeof(IUnique) || fc.FilterRubric.RubricType == typeof(string) || fc.FilterRubric.RubricType == typeof(DateTime) ? r[fc.FilterRubric.RubricId].ComparableInt64(fc.FilterRubric.RubricType) < (Value.ComparableInt64(fc.FilterRubric.RubricType)) : r[fc.FilterRubric.RubricId].ComparableDouble(fc.FilterRubric.RubricType) < (Value.ComparableDouble(fc.FilterRubric.RubricType)) : false); break; default: break; } } else if (Operand != OperandType.NotLike) { ex = (r => r[fc.FilterRubric.RubricId] != null ? Convert.ChangeType(r[fc.FilterRubric.RubricId], fc.FilterRubric.RubricType).ToString().Contains(Convert.ChangeType(Value, fc.FilterRubric.RubricType).ToString()) : false); } else { ex = (r => r[fc.FilterRubric.RubricId] != null ? !Convert.ChangeType(r[fc.FilterRubric.RubricId], fc.FilterRubric.RubricType).ToString().Contains(Convert.ChangeType(Value, fc.FilterRubric.RubricType).ToString()): false); } } return(ex); }
public FilterTerm Clone(object value) { FilterTerm clone = (FilterTerm)this.MemberwiseClone(); clone.FilterRubric = FilterRubric; clone.Value = value; return(clone); }