Skip to main content

Posts

Showing posts with the label complex queries

Combine complex CAML queries

SPSite site = SPContext.Current.Site; SPWeb oWebsiteRoot = site.RootWeb; SPQuery query = new SPQuery(); List conditions = new List (); foreach (string word in filterval) { conditions.Add(string.Format(" {0} ", word)); } string merged = MergeCAMLConditions(conditions, MergeType.Or); .............................................................   private static string MergeCAMLConditions(List conditions, MergeType type) { try { if (conditions.Count == 0) return ""; string typeStart = (type == MergeType.And ? " " : " "); string typeEnd = (type == MergeType.And ? " " : ""); // Build hierarchical structure while (conditions.Count >= 2) { List complexConditions = new List (); for (int i = 0; i < conditions.Count; i += 2) { if (conditions.Count == i + 1) // Only one condition left complexConditions.Add(conditions[i]); else // Two condotions - merge complexConditions.Add(typeStart + conditions...