More on LINQPad

El excelente post de Juan Carlos González Martín sobre LINQPad ha vuelto a llamar mi atención sobre esta útil herramienta, que conocí cuando aún estaba “en pañales” y a la que había perdido la pista últimamente. Y resulta que LINQPad ha ganado en funcionalidades, permitiendo no solo ejecutar consultas LINQ contra bases de datos de SQL Server (para lo que obviamente se apoya en la herramienta sqlMetal, encargada de generar las clases de entidad correspondientes), sino también de compilar y ejecutar grupos de sentencias cualesquiera escritas en C# o VB, algo que probablemente hará apoyándose en el DOM o llamando directamente a los compiladores de línea de comandos. Lo que sí brilla aún por su ausencia es cualquier tipo de documentación, lo que hace necesario un poco de “prueba y fallo”…


La ejecución de sentencias que incluyan consultas LINQ to Objects parece trivial. Se abre una nueva consulta, se indica que el tipo (Type) es “C# statements” (para quienes usan C#) y que Database es “None”. Y ya se puede teclear en la ventana código como el siguiente:



string[] paises = { “España”, “Cuba” };
foreach (string p in paises)
  p.Dump (“Nombre”);


¡No hay Intellisense, claro! Al pulsar el botón de ejecución, LINQPad compila en fragmento (seguramente envolviéndolo en un método adecuado) y lo ejecuta.


Para ejecutar consultas LINQ to XML, es necesario utilizar la opción Query | Advanced properties del menú y agregar una referencia al ensamblado System.Xml.Linq.dll () e importar el espacio de nombres System.Xml.Linq. Entonces podremos ejecutar consultas como ésta:



XElement paises = XElement.Parse (
@”<paises>
    <pais>
      <nombre>España</nombre><codigo>ES</codigo>
    </pais>
    <pais>
      <nombre>Cuba</nombre><codigo>CU</codigo>
    </pais>
  </paises>”);
foreach (XElement p in paises.Elements())
   p.Element(“nombre”).Value.Dump (“Nombre”); 


¿Qué es el método Dump() al que se llama desde estos ejemplos? No lo dice por ningún lado, pero es obvio que es un método extensor que los creadores de LINQPad han definido más o menos así:



public static class ExtensionesLINQPad
{
    public static void Dump(this object obj, string header)
    {
        // RT1 es el control de texto enriquecido
        // en la parte inferior de la ventana
        RT1.Lines.Add(header);
        RT1.Lines.Add(obj.ToString());
    }
}


De todos los recursos asociados a LINQPad a los que Juan Carlos hace referencia en su post, el que más me ha impresionado es el LINQQuiz, un examen que sinceramente recomiendo a todo el que quiera comprobar sus conocimientos sobre LINQ. Alguna vez tuve la idea de poner ejercicios al final de cada capítulo de mi libro, pero eso quedará para la próxima edición 😉

Octavio Hernandez

Desarrollador y consultor en tecnologías .NET. Microsoft C# MVP entre 2004 y 2010.

2 comentarios en “More on LINQPad

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *