Desidero selezionare un elemento dell'elenco di condivisioni che ha il valore Massimo per una colonna particolare. Come posso farlo usando le query CAML?Query MAX con CAML
7
A
risposta
9
<Query>
<OrderBy>
<FieldRef Name="particularcolumn" Ascending="FALSE" />
</OrderBy>
</Query>
3
Questo può essere fatto ordinando da questo campo in modo discendente e recuperando il primo elemento della raccolta.
12
La seguente query CAML sarebbe tornato il valore massimo per una data colonna:
var maxValue;
try
{
using (SPSite objSite = new SPSite(sSiteUrl))
{
using (SPWeb objWeb = objSite.OpenWeb())
{
SPList objList = objWeb.Lists[sListName];
SPQuery objQuery = new SPQuery();
objQuery.Query = "<OrderBy><FieldRef Name='ColumnName' Ascending='False' /></OrderBy><RowLimit>1</RowLimit>";
objQuery.Folder = objList.RootFolder;
// Execute the query against the list
SPListItemCollection colItems = objList.GetItems(objQuery);
if (colItems.Count > 0)
{
maxValue = (<Insert Appropriate Cast>) colItems[0];
}
}
}
}
catch (Exception ex)
{
...
}
return maxValue;
+0
Quali sono i vantaggi delle impostazioni 'objQuery.Folder = objList.RootFolder;'? –
0
Utilizzando il modello oggetto client, questo è come sto recuperando l'ID massimo da un elenco.
using (ClientContext clientContext = new ClientContext("https://sharepointed.com"))
{
clientContext.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
oWeb = clientContext.Web;
List myList= oWeb.Lists.GetByTitle("MyList");
CamlQuery camlQuery = new CamlQuery();
camlQuery.ViewXml = ("<View><Query> <OrderBy> <FieldRef Name='ID' Ascending='False' /> </OrderBy> </Query> <RowLimit>1</RowLimit> </View>");
Microsoft.SharePoint.Client.ListItemCollection listItems = myList.GetItems(camlQuery);
clientContext.Load(listItems);
clientContext.ExecuteQuery();
}
Non dimenticare di impostare RowLimit sulla query. – etc