Depurar una condición de filtro LINQ en C#
En esta lección vas a usar un punto de interrupción para ver cómo LINQ comprueba cada elemento y a corregir una condición de filtro incorrecta.
Introducción
Cuando una consulta LINQ no da el resultado esperado, puedes poner un punto de interrupción (breakpoint) en la función de condición para ver cada valor que se comprueba. Este ejercicio muestra un error muy común: confundir > y >= en el valor límite.
El aprobado empieza en 70, incluido el 70, así que la función IsPassing debe usar >= y no >. Si escribes score > 70, la nota 70 queda excluida por error. Con la condición corregida, el resultado es 70, 71. Pon un punto de interrupción en IsPassing y ejecuta en modo depuración para ver cómo LINQ llama a esta función para cada nota.
Ejemplo de C# ejecutable
using System;
using System.Linq;
class Program
{
static bool IsPassing(int score) => score >= 70;
static void Main()
{
int[] scores = { 69, 70, 71 };
var passing = scores.Where(IsPassing);
Console.WriteLine(string.Join(", ", passing));
}
}
70, 71Practica con el depurador
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
Todos los retos