Social Icons

lunes, 10 de noviembre de 2008

Y desde ahora todo por CAML

Las consultas a SPList por CAML ofrecen muchas ventajas, con lo que he sido yo, que iteraba todo siempre... la primera de ellas es la velocidad a la que se ejecutan, la segunda y, en según qué casos, más importante que la primera es la potencia que nos ofrecen.

Lo último que he tenido que hacer es un buscador en el que dados un parámetro y una lista:

  • Si el parámetro es vacío: Muestra los elementos vigentes de la lista.
  • Si el parámetro es "lst": Muestra un listado de todos los elementos.
  • Si el parámetro es otra cosa: Muestra los elementos que contienen la cadena parámetro en su título o en su descripción.

Todos los resultados se muestran ordenados por fecha de forma ascendente.

Es sorprendente lo simple que se hace una cosa así con las CAML Queries.

protected void buscaCAML(SPList lista, string parametro, HtmlTextWriter writer)
{
SPQuery query = new SPQuery();
string ordenado = "";

string consultaParametro = "" +
"{0}
" +
"{0}
" +
"
{1}";
consultaParametro = string.Format(consultaParametro, parametro, ordenado);

string consultaFechas = "" +
"
" +
"
{0}";
consultaFechas = string.Format(consultaFechas, ordenado);

if (string.IsNullOrEmpty(parametro))
query.Query = consultaFechas;
else if (parametro == "lst")
query.Query = ordenado;
else
query.Query = consultaParametro;

foreach (SPListItem anuncio in lista.GetItems(query))
writer.Write(anuncio["Título"].ToString());
}

Obviamente ésto es más rápido que cualquier método iterativo de búsqueda+ordenación, lo que queda por demostrar es que es más rápido que una consulta SQL al motor de búsqueda cuando la lista es grande...
Se admiten apuestas.


(Por cierto, el Highlighter es rápido y cómodo pero mi método anterior es más bonito cuando se trata de C#)

No hay comentarios: