Operadores de LINQ
Jesús Rodríguez Rodríguez
Operadores de LINQ
Primera Edición, Mayo de 2010
http://www.foxandxss.net
Libro publicado bajo la licencia Creative Commons
2
3
Operadores de LINQ
OPERADORES DE LINQ
1
1. FILTERING (FILTRADO)
6
1.1 OFTYPE
1.2 WHERE
6
7
2. PROJECTION (PROYECCIÓN)
9
2.1 SELECT
9
3. PARTITIONING (PARTICIONADO)
17
3.1 SKIP
3.2 SKIPWHILE
3.4TAKEWHILE
17
18
21
4. JOIN (UNIÓN)
23
4.1 GROUPJOIN
23
5. CONCATENATION (CONCATENACIÓN)
32
5.1 CONCAT
32
6. ORDERING (ORDENACIÓN)
33
6.1 ORDERBY
6.2 ORDERBYDESCENDING
6.3 REVERSE
6.4 THENBY
6.5 THENBYDESCENDING
33
35
38
39
42
7. GROUPING (AGRUPACIÓN)
45
Operadores de LINQ
7.1 GROUPBY
7.2 TOLOOKUP
45
55
8. SET (CONJUNTO)
60
8.1 DISTINCT
60
8. SET (CONJUNTO)62
8.3 INTERSECT
8.4 UNION
64
67
9. CONVERSION (CONVERSIÓN)
70
9.1 ASENUMERABLE
9.2 ASQUERYABLE
9.3 CAST
9.4 TOARRAY
9.5 TODICTIONARY
9.6 TOLIST
70
71
72
73
74
78
10. EQUALITY (IGUALDAD)
80
10.1 SEQUENCEEQUAL
80
11. ELEMENT (ELEMENTO)
82
11.1 ELEMENTAT
11.2 ELEMENTATORDEFAULT
11.3 FIRST
11.4 FIRSTORDEFAULT
11.5 LAST
11.6 LASTORDEFAULT
11.7 SINGLE
11.8 SINGLEORDEFAULT82
82
83
84
85
87
88
89
4
5
Operadores de LINQ
12. GENERATION (GENERACIÓN)
91
12.1 DEFAULTIFEMPTY
12.2 EMPTY
12.3 RANGE
12.4 REPEAT
91
92
93
94
13. QUANTIFIER (CUANTIFICADORES)
95
13.1 ALL
13.2 ANY
13.3 CONTAINS
95
96
97
14. AGGREGATION (AGREGACIÓN)
100
14.1 AGGREGATE
14.2 AVERAGE
14.3 COUNT
14.4 LONGCOUNT
14.5 MAX
14.6 MIN
14.7 SUM
100
102
104
105
106
108
109 1. Filtering (Filtrado)
1. Filtering (Filtrado)
1.1 OfType
El operador OfType nos permite filtrar una secuencia dado un tipo.
1.1.1 Código necesario para los ejemplos
Lista de objetos al azar:
object[] objetos = { "LINQ", 1, 23.4F, "Perro",
new object(), "Casa" };
1.1.2 OfType
public static IEnumerable
this IEnumerable source
)
Le especificamos el tipo que queremosfiltrar y nos devuelve una
enumeración de dicho tipo.
Por ejemplo, si queremos solo los elementos del tipo string usamos el
operador OfType para filtrar esa secuencia:
IEnumerable
Si imprimimos el resultado, la salida sería:
LINQ
Perro
Casa
6
7
Operadores de LINQ
1.2 Where
El operador Where nos permite filtrar una secuencia, pero a diferencia
deOfType, el operador Where es mucho más flexible puesto que admite
como parámetro un delegado.
1.2.1 Código necesario para los ejemplos
Lista de títulos (imaginarios) de libros:
var libros = new List
{
"Programando en C#",
"LINQ para torpes",
"WPF para todos",
"Empezando con LINQ",
"LINQ Avanzado"
};
1.2.2 Where estándar
public static IEnumerable
thisIEnumerable
Func
)
En este caso Where acepta un delegado el cual recibe como parámetro
un elemento de la secuencia y nos devuelve un bool que nos indica si ese
elemento se filtra o no. El operador devuelve una enumeración con los
elementos filtrados.
Queremos una nueva lista de libros donde sólo estén los que sean de
LINQ, para ello usamos Where.
IEnumerable
libro => libro.Contains("LINQ"));
Además, el operador Where se puede convertir a la sintaxis de un query
expression:
IEnumerable
where libro.Contains("LINQ")
select libro;
1. Filtering (Filtrado)
En ambos casos, el resultado de imprimirlo sería:
LINQ para torpes
Empezando con LINQ
LINQ Avanzado
1.2.3 Where + índice
public staticIEnumerable
this IEnumerable
Func
)
En este caso, el delegado acepta también un int el cual representa la
posición de cada elemento en la secuencia que estamos filtrando.
Así que si por ejemplo queremos aquellos libros de LINQ que estén
dentro de las 3 primeras posiciones de la secuencia, podemos usar el
siguiente...
Regístrate para leer el documento completo.