El objetivo de los operadores de partición, consiste en
restringir el número de elementos de una secuencia. Para ello creará 2 subsecuencias en memoria, en base a
un parámetro int o un Func<T, bool>, según el tipo
de operador. Una de estas dos subsecuencias,
serán el resultado, y la elección, también se tendrá en cuenta según el
operador utilizado. Para vislumbrar mejor estas líneas, vamos a ver cada uno de
ellos con más detalle:
miércoles, 6 de mayo de 2015
lunes, 20 de abril de 2015
Quantifiers Operators, All, Any y Contains
Los Quantifier
Operators, son un grupo bastante especial de métodos extensores que
devuelven un objeto de tipo bool.
Este tipo de métodos son en ocasiones obviados, normalmente por su desconocimiento y sustituidos por la unión del uso del método Where() + Count().
Este suele ser un error común de uso, ya que los Quantifier Operators están optimizados para este fin, y la ganancia de rendimiento con su uso es más que evidente.
Más adelante haremos hincapié en ello con unos ejemplos que expongan este manifiesto.
Este tipo de métodos son en ocasiones obviados, normalmente por su desconocimiento y sustituidos por la unión del uso del método Where() + Count().
Este suele ser un error común de uso, ya que los Quantifier Operators están optimizados para este fin, y la ganancia de rendimiento con su uso es más que evidente.
Más adelante haremos hincapié en ello con unos ejemplos que expongan este manifiesto.
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).
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.