Hace poco comencé a estudiar LINQ porque lo necesito para trabajar en un proyecto NET así que aquí dejo mis apuntes que espero sirvan de estudio para otras personas.
NOTA: para todos los ejemplos usaré esta colección de pruebas: https://gist.github.com/Irwin1985/d928abd85cef9270583f51ff2b40fb29
A continuación voy a detallar la lista de los 51 métodos de extensión para LINQ:
| Categoría | Operador estándar de consulta |
|---|---|
| Filtros | Where, OfType |
| Ordenamiento | OrderBy, OrderByDescending, ThenBy, ThenByDescending, Reverse |
| Agrupadores | GroupBy, ToLookup |
| Encuentro | GroupJoin, Join |
| Proyección | Select, SelectMany |
| Agregadores | Aggregate, Average, Count, LongCount, Max, Min, Sum |
| Contadores | All, Any, Contains |
| Elementos | ElementAt, ElementAtOrDefault, First, FirstOrDefault, Last, LastOrDefault, Single, SingleOrDefault |
| Conjuntos | Distinct, Except, Intersect, Union |
| Particiones | Skip, SkipWhile, Take, TakeWhile |
| Contatenadores | Concat |
| Igualadores | SequenceEqual |
| Generadores | DefaultEmpty, Empty, Range, Repeat |
| Conversiones | AsEnumerable, AsQueryable, Cast, ToArray, ToDictionary, ToList |
Operadores de Filtros
| Where | Retorna todos aquellos valores que coincidan con el criterio dado. |
| OfType | Returns values from the collection based on a specified type. However, it will depend on their ability to cast to a specified type. |
Ejemplo con Where:
var adolescentes = listaPersonas.Where(s => s.Edad > 12 && s.Edad < 20);