sábado, 17 de enero de 2015

Proyecciones en LinQ, La cláusula Select y SelectMany






Dentro del mundo de LinQ, las proyecciones, determinan el tipo de datos que será devuelto o proyectado cuando sea aplicado a uno de nuestras secuencias IEnumerable<T>.

 En este apartado estudiaremos los operadores de consulta Select y SelectMany. Hay otros autores y expertos en la materia que les gusta añadir en el apartado de proyecciones las cláusulas Join, GroupBy y GroupJoin, pero en este caso yo he preferido crear un apartado específico para cada una de ellas y así intentar no excederme demasiado en cada una de las entradas para hacerlas más comprensibles y dar más énfasis a cada una de ellas, aplicando casos prácticos de uso.


martes, 16 de diciembre de 2014

Claúsula Where





La cláusula where, representa el elemento de filtrado dentro del mundo de LinQ, al igual que en el lenguaje SQL. Esta es una de las más usadas y de las más útiles de todas las que componen su librería de métodos extensores (System.Linq).


La parte más importante dentro de la cláusula Where, es el llamado ‘Predicate’, este es un Parámetro de tipo Func<TSource, bool> que viene a indicar la condición del filtrado. Os facilito la entrada del blog donde se explican en detalle los delegados anónimos Func y donde podéis ampliar información sobre estos tipos.



miércoles, 10 de diciembre de 2014

Operadores de Consulta





Dentro del universo de LinQ, tenemos dos formas diferentes de realizar las llamadas y hacer uso de nuestros métodos de extensores de IEnumerable<T>, la primera es haciendo uso de las Expresiones Lambda, que vendría a representar un uso cotidiano de cualquier método extensor, y la segunda es utilizando el llamado azúcar sintáctico (formato de consulta) y que nos permite realizar una consulta de manera muy similar a como realizaríamos una llamada en el lenguaje SQL.


Es importante señalar que hay algunas opciones que no están disponibles dentro del formato de consulta, aunque son las mínimas, y que iremos viendo según vayamos estudiando los operadores (métodos extensores).


lunes, 18 de agosto de 2014

Ejecución Diferida (Lazy Loading)




La ejecución perezosa o diferida (Lazy Loading) es el comportamiento por defecto que usa LinQ para ejecutar, valga la redundancia, sus métodos extensores. A grandes rasgos viene a significar que los métodos no se ejecutan en el momento de realizar su llamada, sino que se ejecutan en el momento en que consumimos (utilizamos) alguno de los datos devueltos por esta llamada. Con todo esto el motor de LinQ se asegura el no realizar cálculos, cargas de datos, etc., que el usuario no necesite en ese momento.



domingo, 17 de agosto de 2014

IEnumerable, Entendiendo las secuencias ...


La Iterface IEnumerable<T>, es una de las partes más importantes de todo el mundo de LinQ, ya que todos sus métodos extensores están realizados sobre este tipo y prácticamente todos ellos devuelven objetos de este mismo tipo.

 Podemos entenderla como la mínima expresión de una colección, y prácticamente la mayoría de las colecciones del Framework la implementan (List<T>, Observable<T>, Arrays, etc). En esta parte tenemos que indicar que hay una minoría de ellas que no lo hacen y que principalmente están formadas por colecciones especiales de controles gráficos, tales como el UIElementCollection que es la colección en la que se guardan los objetos contenidos dentro de un Grid de WPF. Cuando estemos acostumbrados a trabajar con LinQ y nos encontremos con una de estas colecciones, lo primero que pensaremos es que o nos falta algún using, o el intellisense o el propio Visual Studio nos están jugando una mala pasada. Un poco más adelante dentro del curso aprenderemos a convertirlas fácilmente en colecciones compatibles con la tecnología.