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[i] + conditions[i + 1] + typeEnd);
}
conditions = complexConditions;
}
return conditions[0];
}
catch (Exception ex)
{
return conditions[0];
}
}
public enum MergeType { Or, And }
SPWeb oWebsiteRoot = site.RootWeb;
SPQuery query = new SPQuery();
List
foreach (string word in filterval)
{
conditions.Add(string.Format("
}
string merged = MergeCAMLConditions(conditions, MergeType.Or); ............................................................. private static string MergeCAMLConditions(List
try
{
if (conditions.Count == 0) return "";
string typeStart = (type == MergeType.And ? "
string typeEnd = (type == MergeType.And ? "
" : ""); // Build hierarchical structure
while (conditions.Count >= 2)
{
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[i] + conditions[i + 1] + typeEnd);
}
conditions = complexConditions;
}
return conditions[0];
}
catch (Exception ex)
{
return conditions[0];
}
}
public enum MergeType { Or, And }
Comments