quinta-feira, 9 de outubro de 2014

Filtrando itens de lista no SharePoint com SPQuery

Mostrarei aqui como realizar a consulta por itens de lista do SharePoint retornando somente os itens que atendem à um filtro determinado utilizando SPQuery.




É possível aplicar o mesmo filtro de dados utilizando uma estrutura "foreach" com "if" interno.
Conforme exemplo abaixo:


//Acesso ao site collection
using (SPSite site = new SPSite("http://siteURL"))
{
    //Acesso ao site
    using (SPWeb web = site.OpenWeb())
    {

        //Acesso à lista do SharePoint
        var list = web.Lists.TryGetList("Nome da Lista");

        if (list != null)
        {
            //Itera sobre todos os itens da lista
            foreach (SPListItem item in list.Items)
            {
                if (Convert.ToInt32(item["Campo2"]) > 1000)
                {
                    //Capturar os itens que atendem a condição
                }
            }
        }

    }
}


Porém, este método implicaria em realizar uma leitura de todos os itens da lista para realizar a verificação podendo degradar sua performance.

Abaixo temos a mesma funcionalidade de filtro de itens de lista utilizando SPQuery.
O código está comentado.


//Acesso ao site collection
using (SPSite site = new SPSite("http://siteURL"))
{
    //Acesso ao site
    using (SPWeb web = site.OpenWeb())
    {

        //Acesso à lista do SharePoint
        var list = web.Lists.TryGetList("Nome da Lista");

        if (list != null)
        {
            //Declaração e inicialização do objeto
            SPQuery query = new SPQuery();

            //Informe os campos que serão retornados
            query.ViewFields = "<FieldRef Name='Campo1'/>" +
                "<FieldRef Name='Campo2'/>";

            //Query
            //No exemplo abaixo é realizado um filtro no campo 'Campo2' trazendo somente itens com valor maior que 1000
            query.Query = "<Where><Geq><FieldRef Name='Campo2'/>" +
                "<Value Type='Number'>1000</Value></Geq></Where>";

            //Coleção de itens da lista retornados usando a query acima construída
            SPListItemCollection collListItems = list.GetItems(query);
        }

    }
}


Qualquer dúvida ou sugestão informe nos comentários.

Abraço !

Nenhum comentário:

Postar um comentário