2009-02-05 5 views

ответ

9
<Query> 
    <OrderBy> 
      <FieldRef Name="particularcolumn" Ascending="FALSE" /> 
    </OrderBy> 
</Query> 
+6

Не забудьте установить RowLimit в запросе. – etc

3

Это может быть выполнено путем упорядочения по этому полю по убыванию и с возвратом первого элемента коллекции.

12

Следующий запрос CAML будет возвращать максимальное значение для данного столбца:

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

Каковы преимущества настроек 'objQuery.Folder = objList.RootFolder;'? –

0

Использование объектной модели клиента, это то, как я извлекая максимальный идентификатор из списка.

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(); 
    } 
Смежные вопросы