De vez en cuando tengo la oportunidad de dar alguna charla sobre temas que no tienen mucha utilidad actual pero con los que disfruto un montón. Éste fue el caso de la sesión que di hace unas semanas en un evento muy especial que llamamos Train the Trainers. Hacemos este evento para los colaboradores más cercanos de MSDN que luego nos ayudan por amor al arte a dar las sesiones públicas en toda España. Os podéis imaginar que los que estamos ahí somos más que colaboradores y al final aquello se convierte en un grupo de amigos hablando de lo que nos gusta (y no, no son los sellos ni la literatura, es el desarrollo).
Siempre intento preparar alguna charla que sea un poco más geek, aunque cada vez me cuesta más porque se me acaban las ideas… En este último Train the Trainers la charla era un Internals de LINQ. Como véis utilidad cero, primero porque no veíamos funcionalidad, sólo internals y segundo porque LINQ todavía no ha salido…
En fin, la sesión no creo que vuelva a repetirla hasta por lo menos dentro de un año cuando ya tengamos LINQ pero mientras tanto me gustaría compartir con vosotros una de las demos que hice. Se trata de un nuevo proveedor de LINQ que permite usar las extensiones a los lenguajes para hacer queries sobre el sistema de indexado de Windows Vista.
El resultado es espectacular porque te permite buscar entre todos los archivos, emails, RSS, etc. de Windows Vista en una línea de código. Como ejemplo un botón, con esta línea buscamos los elementos modificados en los últimos 10 minutos dentro de todo nuestro sistema:
var query = from f in SearchIndex.All where f.DateModified > DateTime.Today.AddMinutes(-10) select f;
Con esta otra línea buscamos los archivos que contengan la palabra «LINQ»:
var query = from f in SearchIndex.All where f.Contains(«LINQ») select f;
Si queréis el código fuente lo he colgado enterito aquí.
Por cierto, que durante la charla se generó un bonito debate LINQ contra SQL. En el caso de este ejemplo no hay discusión porque el indexado de Windows Vista no permite procedimientos almacenados ni optimizaciones sobre el SQL 🙂