Пример #1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TermsCriteria"/> class.
 /// </summary>
 /// <param name="termsOperator">Type of execution mode this terms criteria will take.</param>
 /// <param name="field">Field to be checked for this term.</param>
 /// <param name="member">Property or field being checked for this term.</param>
 /// <param name="values">Constant values being searched for.</param>
 TermsCriteria(TermsOperator termsOperator, string field, MemberInfo member, IEnumerable <object> values)
     : base(field)
 {
     Operator = termsOperator;
     Member   = member;
     Values   = new ReadOnlyCollection <object>(values.ToArray());
 }
Пример #2
0
        /// <summary>
        /// Builds a  <see cref="TermsCriteria"/>
        /// </summary>
        /// <param name="termsOperator">The terms execution mode (optional). Only used when a <see cref="TermsCriteria"/> is returned.</param>
        /// <param name="field">The field that's being searched.</param>
        /// <param name="member">The member information for the field.</param>
        /// <param name="values">The values to be matched.</param>
        /// <returns>Returns a <see cref="TermsCriteria"/> object.</returns>
        internal static ICriteria Build(TermsOperator termsOperator, string field, MemberInfo member, IEnumerable <object> values)
        {
            Argument.EnsureNotNull(nameof(values), values);

            var hashValues = new HashSet <object>(values);

            return(new TermsCriteria(termsOperator, field, member, hashValues));
        }
Пример #3
0
 /// <summary>
 /// Builds a <see cref="TermsCriteria"/>
 /// </summary>
 /// <param name="termsOperator">The terms operator.</param>
 /// <param name="field">The field that's being searched.</param>
 /// <param name="member">The member information for the field.</param>
 /// <param name="values">The values to be matched.</param>
 /// <returns>Returns a <see cref="TermsCriteria"/> object.</returns>
 internal static ICriteria Build(TermsOperator termsOperator, string field, MemberInfo member, params object[] values)
 {
     return(Build(termsOperator, field, member, values.AsEnumerable()));
 }
        Expression VisitContains(string methodName, Expression left, Expression right, TermsOperator executionMode)
        {
            var cm = ConstantMemberPair.Create(left, right);

            if (cm != null)
            {
                var values = ((IEnumerable)cm.ConstantExpression.Value).Cast <object>().ToArray();

                return(new CriteriaExpression(TermsCriteria.Build(executionMode, Mapping.GetFieldName(SourceType, cm.MemberExpression), cm.MemberExpression.Member, values)));
            }

            throw new NotSupportedException(methodName + " must be between a Member and a Constant");
        }