Publicidad
Publicidad

RSS LINQ

Linq es un paradigma de programación que me ha encantado desde su primera versión. Tener un lenguaje que me abstraiga de las particularidades de la fuente de datos y que me permita realizar las mismas operaciones en diferentes sistemas sin tener que cambiar la sintaxis ni la gramática, es de gran valor en estos momentos.

Por ello cuando ha llegado a mi conocimiento el desarrollo de librerías que me permiten utilizar Linq sobre repositorios Javascript (o jQuery), inmediatamente me he configurado mi Visual Studio 2010 y me he puesto a probarlas. Llegando a la conclusión que ahora mismo la más recomendable es linq.js. Que, además, es Open Source y plenamente libre de utilizar según su licencia BSD.

Instalación

El primer paso es crear un proyecto del tipo MVC3. Me da igual que sea vacío, o con la plantilla predeterminada. Ya que yo solamente voy a utilizar una vista para hacer las pruebas.

Una vez creado el mismo abro mi gestor de paquetes NuGet y busco por el término “linq.js”, saliéndome las tres librerías que han publicado: el core, el plugin para jQuery y la de Bindings. Como lo estoy haciendo por NuGet no debo preocuparme por la instalación de los pre-requisitos, como es el tener instalado jQuery en el caso del plugin. Lo hace solo el sistema y me crea las referencias.

Por último abro la vista de Index.cshtml y creo la referencia a la biblioteca javascript. Esto lo podría poner en el ViewStart del proyecto, pero por comodidad para hacer las pruebas la he puesto en local.

<script src="../../Scripts/linq.js" type="text/javascript"></script>

Picando código Para probar como funciona primero creo una variable en donde cargo un array de números. Así ya tengo el repositorio de datos al que atacar.

var lista = [1, 2, 3, 4, 5]; // Cargo los datos enun array

A continuación replico uno de los ejemplos que hay en los vídeos del proyecto en donde utilizo un objeto Enumerable para realizar un bucle por todos los miembros del array de datos y lanzo una función que me muestra una alerta con el valor de miembro.

var lista = [1, 2, 3, 4, 5]; // Cargo los datos en un array

// Realizo un ForEach y lanzo un alert por cada miembro del array Enumerable.From(lista).ForEach(function(i) {alert(i);});

De esta pieza de código saco varias conclusiones. La integración con Visual Studio 2010 es muy buena y el Intellisense también. Lo único que hay que tener cuidado es que estamos trabajando en JavaScript y este es sensible a las Mayúsculas. Por lo cual el método ForEach, lo encuentra, pero forEach no. Otra cosa es que es ligeramente diferente a Linq en C#. Una estructura como la que acabo de escribir no la hubiera echo así en mi código. Pero JS y en especial jQuery tiene su forma de hacer las cosas y funciona muy bien.

Pero quiero hacer algo sencillito que sea más cercano a lo que se hacer en Linq y por ello selecciono los miembros del array que sean igual o mayores que tres y lo cargo en otra variable. A continuación lanzo una alerta en donde visualizo el número de miembros que contiene esta nueva variable.

var lista = [1, 2, 3, 4, 5]; // Cargo los datos en un array

// Selecciono los miembro del array que cumplen la condición y los cargo en una variable var numero = Enumerable.From(lista) .Where(“p => p > 3”) .Select();

// Visualizo el número de miembro de la variable numero. alert(‘El número total de unidades mayor o igual que 3 es: ‘ + numero.Count());

De aquí saco conclusiones más profundas. Permite expresiones lambda; permite una codificación muy similar a la de linq en C# y hace lo que quiero que haga. Además, tirando de Intellisense, veo que hay un montón de funciones interesantes y que van más allá de lo que tenemos en .Net 4. Conclusiones Una herramienta muy buena. Prácticamente imprescindible en estos tiempos de html5 con las posibilidades de repositorio de datos local y que requieren el manejo de datos en el cliente. Es tan sencilla y compleja como lo es linq en C#. Pero a mí, que no es que sea muy amante de JS, me facilita mucho la vida.

Además, los autores no se han quedado en las capacidades del Linq en C#, si no que han incluido funciones de otros lenguajes para crear una libreria de más de 90 métodos.

Más información: linq.js en Codeplex

Aterrizando en la programación funcional

5 Comentarios
Aterrizando en la programación funcional

¿Por qué la programación funcional suscita tanto interés?, ¿qué la diferencia del principal paradigma imperativo usado en la industria?, ¿en que grado deberías/podrías sacar partido a la programación funcional? Este tipo de cuestiones aparecen de forma recurrente entre aquellos que observan con curiosidad o recelo los movimientos de los lenguajes por incluir características de programación funcional.

Aunque el tema es amplísimo, complejo e inevitablemente propenso al partidismo y subjetividad, intentaré desde mi modesta experiencia apuntar algunas ideas que quizás, te respondan a estas cuestiones.

Leer más »

Leer datos desde una hoja Excel con LinqToExcel

6 Comentarios
Leer datos desde una hoja Excel con LinqToExcel

Una de las cosas más pesadas que nos podemos encontrar al desarrollar aplicaciones de gestión de datos es el interaccionar con las aplicaciones Office, y el uso de las librerías Interop.

Sin embargo la expansión de proyectos Open Source (y la inmensa mayoría de ellos gratuitos) que se distribuyen por el excelente gestor de Paquetes NuGet, me ha permitido acceder a una pequeña pero potente librería para leer ficheros Excel utilizando Linq: LinqToExcel.

Leer más »
Publicidad

Mega curso gratuito de iniciación a C# en vídeo

3 Comentarios
Mega curso gratuito de iniciación a C# en vídeo

Material escrito y audiovisual en Internet sobre desarrollo en cualquier tecnología, lenguaje o escuela, hay para estar estudiando durante el resto de nuestras vidas.

Pero también hay que reconocer aquel material que, además de ser gratuito y de libre acceso, está grabado por un profesional de reconocidos méritos y un nivel de calidad técnica que lo hace brillar en medio del océano de información.

Leer más »

Linq, un lenguaje de consultas que marca diferencias

30 Comentarios
Linq, un lenguaje de consultas que marca diferencias

addEventListener('load', function (event) { prettyPrint() }, false);

Language Integrated Query es un lenguaje de consultas creado para facilitar la explotación de los datos sin importar el tipo de fuente de datos utilizada. Permite consultar información en tecnologías tan diferentes como ficheros XML, bases de datos relacionales o colecciones fuertemente tipadas.

Para ello el “truco” está crear una capa que permita tratar los datos con un lenguaje orientado a objetos y que se abstraiga de la fuente de datos subyacente. De esta forma el desarrollador se puede centrar en la lógica de la consulta olvidándose de la sintaxis específica de cada fuente de datos.

Veamos unos cuantos ejemplos.

Leer más »

La potencia de Linq sobre JavaScript

5 Comentarios
La potencia de Linq sobre JavaScript

addEventListener('load', function (event) { prettyPrint() }, false);

Linq es un paradigma de programación que me ha encantado desde su primera versión. Tener un lenguaje que me abstraiga de las particularidades de la fuente de datos y que me permita realizar las mismas operaciones en diferentes sistemas sin tener que cambiar la sintaxis ni la gramática, es de gran valor en estos momentos.

Por ello cuando ha llegado a mi conocimiento el desarrollo de librerías que me permiten utilizar Linq sobre repositorios Javascript (o jQuery), inmediatamente me he configurado mi Visual Studio 2010 y me he puesto a probarlas. Llegando a la conclusión que ahora mismo la más recomendable es linq.js. Que, además, es Open Source y plenamente libre de utilizar según su licencia BSD.

Leer más »

Qué podemos hacer con los Delegados Genéricos. Fundamentos de LINQ III

5 Comentarios
Qué podemos hacer con los Delegados Genéricos. Fundamentos de LINQ  III

addEventListener('load', function (event) { prettyPrint() }, false);

Otro de los aspectos fundamentales de LINQ son los delegados genéricos introducidos en .NET Framework 2.0. En la mayoría de los métodos de extensión de la interfaz IEnumerable tenemos funciones en modo de predicados, selectores, selectores claves, etc. Todos ellos son, en su mayoría, representados por los delegados genéricos Action y Func.

En este artículo veremos como estos delegados genéricos encajan en lo que hemos explicado anteriormente cuando hablábamos de los métodos de extensión o de las características de la interfaz genérica IEnumerable.

Leer más »
Publicidad

El enumerador genérico IEnumerable. Fundamentos de LINQ II

6 Comentarios
El enumerador genérico IEnumerable. Fundamentos de LINQ II

addEventListener('load', function (event) { prettyPrint() }, false);

Si en la primera entrada a esta serie de artículos sobre Fundamentos de LINQ hacíamos un rápido repaso a los Métodos de extensión, ahora toca el turno de la interfaz sobre la que la mayoría de colecciones del CLR de .NET Framework implementan directa o indirectamente.

Básicamente describiremos la importancia en entender su funcionamiento y como los métodos de extensión de LINQ juegan un papel importante a la hora de ejecutar operaciones sobre una colecciones de objetos (independientemente del proveedor LINQ).

Leer más »

Conociendo los métodos de extensión. Fundamentos de LINQ I

28 Comentarios
Conociendo los métodos de extensión. Fundamentos de LINQ I

addEventListener('load', function (event) { prettyPrint() }, false);

En Noviembre del 2007 junto con el lanzamiento de .NET Framework 3.5 se presentó LINQ (Language INtegrated Query) como una de las novedades de ésta Release. Muchas de las características de LINQ fueron originalmente probadas con el lenguaje creado por Microsoft Research denominado .

LINQ proporciona de forma nativa la capacidad de realizar consultas al estilo SQL desde el propio lenguaje de forma agnóstica al propio sistema de almacenamiento, es decir que tanto podemos utilizar sobre orígenes o conjuntos de datos relacionales como objetos almacenados en memoria así como un amplio abanico de proveedores que van desde documentos XML hasta NHibernate pasando por Twitter o Amazon.

Leer más »
Publicidad
Inicio
Inicio

Ver más artículos