示例#1
0
        public bool Evaluate(Record r, SubRecord sr, Element se)
        {
            if (se == null)
            {
                return(false);
            }

            var value = sr.GetCompareValue(se);
            int diff  = ValueComparer.Compare(value, this.Value);

            switch (this.Type)
            {
            case BatchCondElementType.Set:
                break;

            case BatchCondElementType.Add:
                break;

            case BatchCondElementType.Subtract:
                break;

            case BatchCondElementType.Multiply:
                break;

            case BatchCondElementType.Divide:
                break;

            case BatchCondElementType.Clear:
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(false);
        }
示例#2
0
        public override bool Match(Record r, SubRecord sr, Element se)
        {
            if (this.Type == SearchCondElementType.Exists && se != null)
            {
                return(true);
            }

            if (this.Type == SearchCondElementType.Missing && se == null)
            {
                return(true);
            }

            if (se == null)
            {
                return(false);
            }

            var value = sr.GetCompareValue(se);
            int diff  = ValueComparer.Compare(value, this.Value);

            switch (this.Type)
            {
            case SearchCondElementType.Equal:
                return(diff == 0);

            case SearchCondElementType.Not:
                return(diff != 0);

            case SearchCondElementType.Greater:
                return(diff > 0);

            case SearchCondElementType.Less:
                return(diff < 0);

            case SearchCondElementType.GreaterEqual:
                return(diff >= 0);

            case SearchCondElementType.LessEqual:
                return(diff <= 0);

            case SearchCondElementType.StartsWith:
                if (diff == 0)
                {
                    return(true);
                }

                if (value != null && this.Value != null)
                {
                    return(value.ToString().StartsWith(this.Value.ToString(), StringComparison.CurrentCultureIgnoreCase));
                }

                break;

            case SearchCondElementType.EndsWith:
                if (diff == 0)
                {
                    return(true);
                }

                if (value != null && this.Value != null)
                {
                    return(value.ToString().EndsWith(this.Value.ToString(), StringComparison.CurrentCultureIgnoreCase));
                }

                break;

            case SearchCondElementType.Contains:
                if (diff == 0)
                {
                    return(true);
                }

                if (value != null && this.Value != null)
                {
                    return(value.ToString().IndexOf(this.Value.ToString(), StringComparison.CurrentCultureIgnoreCase) >= 0);
                }

                break;
            }

            return(false);
        }