private Operator CamlFilterBuilder(SearchQueryFilter queryFilter) { if (queryFilter.Op == FilterOperator.BeginsWith) { return(Operator.BeginsWith(queryFilter.Fieldname, CamlFilterValueTypeBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()), CamlFilterValueBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()))); } else if (queryFilter.Op == FilterOperator.Contains) { return(Operator.Contains(queryFilter.Fieldname, CamlFilterValueTypeBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()), CamlFilterValueBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()))); } else if (queryFilter.Op == FilterOperator.Equals) { return(Operator.Equal(queryFilter.Fieldname, CamlFilterValueTypeBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()), CamlFilterValueBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()))); } else if (queryFilter.Op == FilterOperator.NotEqual) { return(Operator.NotEqual(queryFilter.Fieldname, CamlFilterValueTypeBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()), CamlFilterValueBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()))); } else if (queryFilter.Op == FilterOperator.GreaterThan) { return(Operator.GreaterThan(queryFilter.Fieldname, CamlFilterValueTypeBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()), CamlFilterValueBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()))); } else if (queryFilter.Op == FilterOperator.LessThan) { return(Operator.LowerThan(queryFilter.Fieldname, CamlFilterValueTypeBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()), CamlFilterValueBuilder(queryFilter.Fieldname, queryFilter.Value.ToString()))); } return(null); }
private SearchQueryFilter MapToFilter(List list, FilterFieldQueryOperator filterOperator, string filterField, string filterFieldValue, FilterChainingOperator?chainingOperatorUsedInCQWP) { if (string.IsNullOrEmpty(filterField)) { return(null); } var foundFields = list.Context.LoadQuery(list.Fields.Where(item => item.InternalName == filterField)); list.Context.ExecuteQueryRetry(); if (foundFields.FirstOrDefault() != null) { // Store field for future reference this.queryFields.Add(foundFields.FirstOrDefault()); // Resolve user ID to name if (foundFields.FirstOrDefault().FieldTypeKind == FieldType.User) { //[11;#i:0#.f|membership|[email protected]] if (filterFieldValue.Contains("|")) { // grab UPN string[] accountParts = filterFieldValue.Replace("[", "").Replace("]", "").Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries); //string upn = accountParts[accountParts.Length - 1]; if (int.TryParse(accountParts[0], out int userId)) { var user = this.clientContext.Web.GetUserById(userId); this.clientContext.Load(user, p => p.Title); this.clientContext.ExecuteQueryRetry(); filterFieldValue = user.Title; } } } // Build the search query filter object var s = new SearchQueryFilter { Value = filterFieldValue, FilterType = FilterType.Field, Op = MapQueryFilterOperator(filterOperator), Fieldname = foundFields.FirstOrDefault().InternalName, ChainingOperatorUsedInCQWP = chainingOperatorUsedInCQWP, FieldNameMatchText = "" }; return(s); } return(null); }