/// <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()); }
/// <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)); }
/// <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"); }