Могу ли я отсортировать список Sharepoint перед началом цикла по элементам списка?

#c# #sharepoint

#c# #sharepoint

Вопрос:

возможно ли мне отсортировать список sharepoint по дате или по создателю, после чего я начну перебирать его для извлечения данных?

Кроме того, возможно ли выполнить подсчет после того, как я сгруппирую список элементов вместе. Например, я сгруппирую элементы по создателю, затем проверю, сколько таких элементов существует.

Я думаю, что задаю здесь более 1 вопроса, пожалуйста, дайте мне знать, если я должен начать другой вопрос.

Ответ №1:

Для этого можно использовать CAML, например

OrderBy или GroupBy

 SPList list = ...; //your list;
var query = new SPQuery();
query.Query = "<OrderBy> <FieldRef Name="Your field"/> </OrderBy>" 
//or
query.Query = "<GroupBy> <FieldRef Name="Your field"/> </GroupBy>"
var items = list.GetItems(query);
foreach(var item in items)
{
  //do your work
}
  

Но для подсчета сгруппированных элементов нет прямого способа OOB. Когда вы получаете элемент из запроса, вы можете получить его количество из коллекции элементов.

Ответ №2:

Все это возможно при использовании LINQ для SharePoint.

Пример из использования LINQ в SharePoint:

 // Get DataContext from page context
DataContext data = new DataContext(SPContext.Current.Web.Url);

// Get the SharePoint list
EntityList<Customer> Customers = data.GetList<Customer>("Customers");

// Query for customers from London
var londonCustomers = from customer in Customers
                      where customer.City == "London"
                      select customer;

foreach (var londonCust in londonCustomers)
{
    Console.Writeline("id = {0}, City = {1}", londonCust.CustomerId, londonCust.City);
}