/// <summary> /// Initializes a new instance of the <see cref="TermsCriteria"/> class. /// </summary> /// <param name="executionMode">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(TermsExecutionMode?executionMode, string field, MemberInfo member, IEnumerable <object> values) : base(field) { ExecutionMode = executionMode; Member = member; Values = new ReadOnlyCollection <object>(values.ToArray()); }
private TermsCriteria(TermsExecutionMode?executionMode, string field, MemberInfo member, HashSet <object> values) { this.executionMode = executionMode; this.field = field; this.member = member; this.values = values; }
/// <summary> /// Initializes a new instance of the <see cref="TermsCriteria"/> class. /// </summary> /// <param name="executionMode">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> private TermsCriteria(TermsExecutionMode? executionMode, string field, MemberInfo member, IEnumerable<object> values) : base(field) { this.executionMode = executionMode; this.member = member; this.values = new ReadOnlyCollection<object>(values.ToArray()); }
private TermsCriteria(TermsExecutionMode?executionMode, string field, MemberInfo member, IEnumerable <object> values) { this.executionMode = executionMode; this.field = field; this.member = member; this.values = new ReadOnlyCollection <object>(values.ToArray()); }
private TermsCriteria(TermsExecutionMode? executionMode, string field, MemberInfo member, HashSet<object> values) { this.executionMode = executionMode; this.field = field; this.member = member; this.values = values; }
/// <summary> /// Builds a <see cref="TermCriteria"/> or <see cref="TermsCriteria"/>, depending on how many values are /// present in the <paramref name="values"/> collection. /// </summary> /// <param name="executionMode">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>Either a <see cref="TermCriteria"/> object or a <see cref="TermsCriteria"/> object.</returns> internal static ITermsCriteria Build(TermsExecutionMode?executionMode, string field, MemberInfo member, IEnumerable <object> values) { Argument.EnsureNotNull("values", values); var hashValues = new HashSet <object>(values); if (hashValues.Count == 1) { return(new TermCriteria(field, member, hashValues.First())); } return(new TermsCriteria(executionMode, field, member, hashValues)); }
public void CombineWithAllTermFieldsSame_OrCompatibleExecutionMode_CombinesIntoSingleTerm(TermsExecutionMode?executionMode) { var salutationMs = TermsCriteria.Build(executionMode, "salutation", memberInfo, "Miss", "Ms"); var criteria = OrCriteria.Combine(salutationMr, salutationMrs, salutationMs); var termsCriteria = Assert.IsType <TermsCriteria>(criteria); Assert.Equal(salutationMr.Field, termsCriteria.Field); Assert.Same(memberInfo, termsCriteria.Member); var allValues = salutationMr.Values.Concat(salutationMrs.Values).Concat(salutationMs.Values).Distinct().ToArray(); foreach (var value in allValues) { Assert.Contains(value, termsCriteria.Values); } Assert.Equal(allValues.Length, termsCriteria.Values.Count); }
/// <summary> /// Builds a <see cref="TermCriteria"/> or <see cref="TermsCriteria"/>, depending on how many values are /// present in the <paramref name="values"/> collection. /// </summary> /// <param name="executionMode">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>Either a <see cref="TermCriteria"/> object or a <see cref="TermsCriteria"/> object.</returns> internal static ITermsCriteria Build(TermsExecutionMode?executionMode, string field, MemberInfo member, params object[] values) { return(Build(executionMode, field, member, values.AsEnumerable())); }