Example #1
0
        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);
        }
Example #2
0
        public object Clone()
        {
            FilterTerm clone = (FilterTerm)this.MemberwiseClone();

            clone.FilterRubric = FilterRubric;
            return(clone);
        }
Example #3
0
        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);
        }
Example #4
0
        public FilterTerm Clone(object value)
        {
            FilterTerm clone = (FilterTerm)this.MemberwiseClone();

            clone.FilterRubric = FilterRubric;
            clone.Value        = value;
            return(clone);
        }