Saltar al contenido
Logotipo de Trainontech Trainontech

Lenguajes y Fundamentos de Programación · LNG-161

C# avanzado: LINQ, async y genéricos

LINQ, async/await, genéricos y registros para escribir C# expresivo y seguro frente a nulos y carreras.

Bajo demanda Avanzado 8 módulos · 39 clases

Formato asíncrono Desarrollo C#, .NET Interactive

Lo que aprenderás

  • Consultar colecciones y orígenes remotos con LINQ, tanto en sintaxis de método como de consulta.
  • Distinguir ejecución diferida de inmediata y prever cuándo se materializa una consulta.
  • Escribir métodos asíncronos con async/await y evitar bloqueos por espera síncrona.
  • Definir tipos genéricos con restricciones y aprovechar covarianza y contravarianza en interfaces.
  • Modelar datos inmutables con registros, expresiones with y coincidencia de patrones.
  • Cancelar operaciones en curso con CancellationToken y tratar la excepción resultante.

Contenido del curso

8 módulos · 39 clases en vídeo · práctica guiada en cada módulo

Módulo 1 · Presentación y punto de partida 4 clases
  • Qué asume el curso y qué repasa
  • Entorno de trabajo y proyecto base
  • Cuadernos con .NET Interactive para probar ideas
  • Cómo se comprueba cada refactorización
Módulo 2 · Delegados, lambdas y expresiones 5 clases
  • Func, Action y Predicate
  • Expresiones lambda y capturas
  • Métodos de extensión: cómo aparece LINQ
  • Árboles de expresión frente a delegados
  • Eventos y suscripción
Módulo 3 · LINQ a objetos 5 clases
  • Where, Select, OrderBy y agrupaciones
  • Sintaxis de consulta frente a sintaxis de método
  • Ejecución diferida y trampas asociadas
  • Join, GroupJoin y SelectMany
  • Agregaciones y proyecciones anónimas
Módulo 4 · LINQ sobre orígenes remotos 5 clases
  • IQueryable y traducción de la consulta
  • Qué se ejecuta en el servidor y qué en memoria
  • Consultas que degeneran en muchas peticiones
  • Materializar en el momento adecuado
  • Depurar la consulta generada
Módulo 5 · Programación asíncrona 5 clases
  • Task, async y await paso a paso
  • Contexto de sincronización e interbloqueos
  • Task.WhenAll y paralelismo controlado
  • Excepciones en código asíncrono
  • Cancelación con CancellationToken
Módulo 6 · Flujos asíncronos y canales 5 clases
  • IAsyncEnumerable y await foreach
  • Producir datos por partes
  • System.Threading.Channels
  • Límite de concurrencia y contrapresión
  • Casos donde no compensa la asincronía
Módulo 7 · Genéricos y modelado 5 clases
  • Restricciones de tipo genérico
  • Covarianza y contravarianza en interfaces
  • Registros, inmutabilidad y expresiones with
  • Coincidencia de patrones avanzada
  • Tipos anulables como contrato del API
Módulo 8 · Caso práctico: cliente de datos asíncrono 5 clases
  • Diseño del cliente y de sus abstracciones genéricas
  • Consultas LINQ sobre el origen de datos
  • Descarga concurrente con cancelación
  • Pruebas de comportamiento asíncrono
  • Entrega: biblioteca reutilizable documentada

Requisitos

  • C# a nivel intermedio: clases, herencia, interfaces, colecciones y manejo de excepciones.
  • SDK de .NET 8 instalado, con Visual Studio, Rider o Visual Studio Code.
  • Haber trabajado con proyectos de consola y paquetes NuGet.

Descripción

En un proyecto .NET real, tres cosas separan el código que se mantiene del que se sufre: consultas LINQ que se materializan cuando no deben, métodos asíncronos que en algún punto se esperan de forma bloqueante y jerarquías de genéricos que nadie entiende. Los tres problemas comparten origen: se usan las construcciones sin saber qué hace el compilador con ellas.

El curso desmonta cada una con ejemplos que fallan de forma visible. Se comparan consultas LINQ sobre objetos y sobre un origen remoto observando el árbol de expresión, se depuran interbloqueos causados por Result y Wait, se escriben tipos genéricos con restricciones y se modela un dominio inmutable con registros. Cada bloque termina con una refactorización sobre código ya escrito.

Al terminar se escribe C# idiomático y se sabe leer el de bibliotecas del ecosistema, que se apoyan intensamente en estas construcciones. Es la preparación directa para trabajar con ASP.NET Core, Entity Framework Core o servicios que atienden muchas peticiones simultáneas, donde la asincronía mal entendida se paga en producción.

¿Para quién es este curso?

  • Desarrolladores .NET que mantienen servicios en producción y arrastran problemas de asincronía.
  • Backend developers que trabajan con Entity Framework Core y consultas que rinden mal.
  • Programadores que revisan código C# ajeno y deben detectar esperas bloqueantes y consultas mal materializadas.
Bajo demanda

Curso diseñado con la ficha cerrada. Se produce al confirmarse un grupo o un contrato.

Código
LNG-161
Nivel
Avanzado
Público
Desarrollo
Entorno
C#, .NET Interactive

Este curso incluye

  • 39 clases en vídeo bajo demanda
  • Práctica en entornos web y simuladores, sin instalar nada
  • Tutorización en el campus
  • Acceso desde móvil, tableta y ordenador
  • Actualizaciones cuando cambia la versión de la herramienta
  • Certificado de finalización

Sigue aprendiendo

Cursos relacionados

PY-106Lenguajes y Fundamentos de Programación

Concurrencia: multihilo y multiproceso

Paralelizar adquisición de datos y tareas de E/S sin introducir errores difíciles de reproducir.

Python

Avanzado 33 clases

PY-107Lenguajes y Fundamentos de Programación

Testing y TDD en Python

Pruebas unitarias, fixtures y desarrollo dirigido por pruebas en proyectos técnicos reales.

Python

Avanzado 34 clases

PY-131Lenguajes y Fundamentos de Programación

Webscraping con agentes de IA en local

Agentes que navegan y extraen datos sin depender de servicios en la nube.

PythonOllama

Avanzado 34 clases