public void Operate(Operator newop, IValueProvider provider) { if (newop == Operator.GreaterThan || newop == Operator.GreaterThanOrEqual || newop == Operator.LessThan || newop == Operator.LessThanOrEqual) { var deftype = def.AttributeType; if (deftype != AttributeType.Date && deftype != AttributeType.Numeric && deftype != AttributeType.Opaque) { throw new ApplicationException("Inequality Operation Not Valid For " + deftype + " AttributeType."); } } if (newop != @operator) { @operator = newop; valueProvider = provider ?? new ValueProvider(new object[0]); return; } if (provider != null && valueProvider.CanMerge && provider.CanMerge) { valueProvider.Merge(provider); } }