Eine LINQ-Filterbedingung debuggen in C#
In dieser Lektion beobachtest du mit einem Haltepunkt, wie LINQ jedes Element prüft, und korrigierst eine falsche Filterbedingung.
Einführung
Liefert eine LINQ-Abfrage nicht das erwartete Ergebnis, kannst du einen Haltepunkt (breakpoint) in die Bedingungsfunktion setzen und jeden geprüften Wert beobachten. Diese Übung zeigt einen sehr häufigen Fehler: die Verwechslung von > und >= beim Grenzwert.
Bestanden ist ab 70 Punkten, also einschließlich 70, deshalb muss die Funktion IsPassing >= statt > verwenden. Schreibst du score > 70, wird die Punktzahl 70 fälschlich ausgeschlossen. Mit der korrigierten Bedingung lautet das Ergebnis 70, 71. Setze einen Haltepunkt in IsPassing und starte den Debug-Modus, um zu sehen, wie LINQ diese Funktion für jede Punktzahl aufruft.
Ausführbares C#-Beispiel
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, 71Mit dem Debugger üben
Mit einer Challenge üben
Nutze den Inhalt dieser Lektion, um ein echtes Problem zu lösen. Jede Challenge läuft im Browser, mit sofortigen Tests und einem KI-Review.
Alle Challenges