Отладка условия фильтра LINQ в C#
В этом уроке вы с помощью точки останова посмотрите, как LINQ проверяет каждый элемент, и исправите неверное условие фильтра.
Введение
Если запрос LINQ даёт не тот результат, можно поставить точку останова (breakpoint) в функцию условия и посмотреть каждое проверяемое значение. Это упражнение показывает очень частую ошибку: путаницу между > и >= на граничном значении.
Зачёт начинается с 70 включительно, поэтому функция IsPassing должна использовать >=, а не >. Если написать score > 70, балл 70 по ошибке не попадёт в результат. С исправленным условием результат 70, 71. Поставьте точку останова в IsPassing и запустите отладку, чтобы увидеть, как LINQ вызывает эту функцию для каждого балла.
Пример на C#, который можно запустить
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, 71Практика с отладчиком
Попрактикуйтесь на задаче
Примените материал этого урока к реальной задаче. Каждая задача запускается в браузере, с мгновенными тестами и разбором от ИИ.
Все задачи