Вот фрагмент кода, который я использовал в Silverlight для генерации CAML-запроса на основе параметров поиска.
Может быть, это полезно.
private ClientContext context;
private Microsoft.SharePoint.Client.List SampleSPList;
private Microsoft.SharePoint.Client.ListItemCollection SampleSPCollection;
//Load the List
void LoadList()
{
SampleSPList = context.Web.Lists.GetByTitle("Sample");
context.Load(SampleSPList);
CamlQuery query = new Microsoft.SharePoint.Client.CamlQuery();
string camlQueryXml = "";
bool existsWhere = false;
if (searchString.Text != "")
{
camlQueryXml = camlQueryXml + "<Contains><FieldRef Name='sampleString' /><Value Type='Text'>" + searchString.Text + "</Value></Contains>";
if (existsWhere == true) {
camlQueryXml = "<And>" + camlQueryXml + "</And>";
}
existsWhere = true;
}
if (searchTextArea.Text != "")
{
camlQueryXml = camlQueryXml + "<Contains><FieldRef Name='sampleTextArea' /><Value Type='Text'>" + searchTextArea.Text + "</Value></Contains>";
if (existsWhere == true)
{
camlQueryXml = "<And>" + camlQueryXml + "</And>";
}
existsWhere = true;
}
if (existsWhere == true) { camlQueryXml = "<View><Query><OrderBy><FieldRef Name='ID' /></OrderBy><Where>" + camlQueryXml + "</Where></Query></View>"; }
else { camlQueryXml = "<View><Query><OrderBy><FieldRef Name='ID' /></OrderBy></Query></View>"; }
query.ViewXml = camlQueryXml;
SampleSPCollection = SampleSPList.GetItems(query);
context.Load(SampleSPCollection);
context.ExecuteQueryAsync(ListLoaded, ListLoadFailed);
}