Looking for c# Keywords? Try Ask4Keywords

C# Language Как LINQ to Object выполняет запросы


пример

Запросы LINQ не выполняются немедленно. Когда вы строите запрос, вы просто сохраняете запрос для будущего выполнения. Только когда вы действительно запрашиваете итерацию запроса, выполняется запрос (например, в цикле for, при вызове ToList, Count, Max, Average, First и т. Д.).

Это считается отсроченным исполнением . Это позволяет вам создавать запрос в несколько этапов, потенциально модифицируя его на основе условных операторов, а затем выполнять его позже только после того, как потребуется результат.

Учитывая код:

var query = from n in numbers 
            where n % 2 != 0
            select n;

В приведенном выше примере сохраняется только запрос в переменной query . Он не выполняет сам запрос.

Оператор foreach заставляет выполнить запрос:

foreach(var n in query) {
    Console.WriteLine($"Number selected {n}");
}

Некоторые методы LINQ также инициируют выполнение запроса, Count , First , Max , Average . Они возвращают одиночные значения. ToList и ToArray собирает результат и превращает их в список или массив соответственно.

Имейте в виду, что вы можете многократно перебирать запрос по нескольким запросам, если вы вызываете несколько функций LINQ в одном запросе. Это может дать вам разные результаты при каждом вызове. Если вы хотите работать только с одним набором данных, обязательно сохраните его в списке или массиве.