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