Пример #1
0
        public DictionaryColumn()
        {
            ITypeProvider typeProvider = TypeProviderFactory.Get(typeof(TColumnType));

            _comparer = (IXArrayComparer <TColumnType>)typeProvider.TryGetComparer();
            _copier   = (IValueCopier <TColumnType>)typeProvider.TryGetCopier();
        }
Пример #2
0
        public static ComparerExtensions.Comparer TryGetComparer(this ITypeProvider typeProvider, CompareOperator op)
        {
            IXArrayComparer comparer = typeProvider.TryGetComparer();

            if (comparer == null)
            {
                return(null);
            }
            return(comparer.TryBuild(op));
        }
Пример #3
0
        public static Comparer TryBuild(this IXArrayComparer comparer, CompareOperator cOp)
        {
            // Return text comparisons if this is a text comparer only
            IXArrayTextComparer textComparer = comparer as IXArrayTextComparer;

            if (textComparer != null)
            {
                switch (cOp)
                {
                case CompareOperator.Contains:
                    return(textComparer.WhereContains);

                case CompareOperator.ContainsExact:
                    return(textComparer.WhereContainsExact);

                case CompareOperator.StartsWith:
                    return(textComparer.WhereStartsWith);

                case CompareOperator.EndsWith:
                    return(textComparer.WhereEndsWith);
                }
            }

            // Return the function for the desired comparison operation
            switch (cOp)
            {
            case CompareOperator.Equal:
                return(comparer.WhereEqual);

            case CompareOperator.NotEqual:
                return(comparer.WhereNotEqual);

            case CompareOperator.GreaterThan:
                return(comparer.WhereGreaterThan);

            case CompareOperator.GreaterThanOrEqual:
                return(comparer.WhereGreaterThanOrEqual);

            case CompareOperator.LessThan:
                return(comparer.WhereLessThan);

            case CompareOperator.LessThanOrEqual:
                return(comparer.WhereLessThanOrEqual);

            case CompareOperator.Contains:
                // Contains resolves to Equals by default
                return(comparer.WhereEqual);
            }

            // Throw if this comparison isn't supported
            throw new ArgumentException($"{cOp} not supported for column");
        }
Пример #4
0
 public EqualityComparerAdapter(IXArrayComparer inner)
 {
     _inner = (IXArrayComparer <T>)inner;
 }