sábado, 11 de abril de 2015

Joins




Los sistemas de bases de datos relacionales tradicionales, tienen la habilidad de poder fundir múltiples conjuntos de datos (normalmente tablas) dentro del resultado de una consulta. Para realizar estas uniones, se tienen en cuenta los datos en común entre unos y otros conjuntos, realizándose generalmente entre claves primarias y claves ajenas (PK y FK).

 Si nos ceñimos al caso de LinQ y al trabajo con datos en memoria mediante la programación orientada a objetos (OOP), el uso de joins en sí, es mucho menos frecuente, pero para quien se sienta cómodo con este tipo de acciones, Microsoft nos proporciona el operador Join, dentro de su conjunto de métodos extensores.


También abordaremos el caso del operador GroupJoin, que nos ofrece la capacidad de relacionar 2 conjuntos de datos, con una tipología mucho más cercana al programador, creando propiedades de tipo colección dentro de las propiedades de la secuencia de resultado, eliminando de esta manera los campos con datos redundantes.




martes, 24 de marzo de 2015

La claúsula GroupBy




Continuamos avanzando dentro de los operadores de consulta de LinQ, y ahora le toca el turno a Group By. Group By es otro de los operadores de consulta de proyección, que a grandes rasgos, nos permite desde una colección de entrada, devolver una colección de salida agrupada, mediante un sencillo grupo de claves valor. Donde la clave estará compuesta por los campos por los que hemos agrupados (los que forman el group by) y el valor lo formarán una colección de elementos que comparten los mismos valores para las propiedades que forman la clave.



miércoles, 28 de enero de 2015

IEqualityComparer




Llegado a este punto, vamos a hacer un pequeño parón dentro de los operadores de consulta, para centrarnos en una interface muy útil dentro de la comparación de nuestros objetos, y que bajo mi opinión, mucha gente no le da la importancia que realmente tiene, hasta llegar al punto de que muchos autores ni siquiera le dediquen una línea dentro de libros dedicados por entero a LinQ.

En pocas palabras, la interface IEqualityComparer<T>, nos permite especificar nuestra propia clave de comparación, sin que para ello tengamos que redefinir ninguno de los métodos iniciales de la clase Object. Esto nos ofrece una versatilidad gigante, ya que podemos crear todos los que queramos según nuestras necesidades y nuestro modo de operar. Veremos que esto será clave en el uso de operadores como Group By, Distinct, Union, Intersect, etc.



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.