Обзор LINQ: Where, Select, OrderBy, Take/Skip; отложенное выполнение
Создавайте небольшие конвейеры LINQ над IEnumerable : фильтруйте с помощью Where, преобразуйте с помощью Select, упорядочивайте с помощью OrderBy и изучайте разницу между отложенным выполнением и материализацией.
«Обзор LINQ: Where, Select, OrderBy, Take/Skip; отложенное выполнение» — бесплатный урок C# Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 3 уроков всего.
Обзор LINQ
Цель: использовать небольшие последовательности операций LINQ для фильтрации, преобразования и упорядочивания данных.
- Where (фильтрация)
- Select (преобразование)
- OrderBy, Take/Skip
- Отложенное выполнение и материализация
Where и Select
Объединяйте Where (фильтрация), а затем Select (преобразование). Читайте такую последовательность слева направо.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
int[] data = new int[] { 1, 2, 3, 4, 5, 6 };
// Filter even numbers, then square them
var query = data.Where(x => x % 2 == 0)
.Select(x => x * x);
foreach (int n in query)
{
Console.WriteLine(n); // 4, 16, 36
}
}
}
OrderBy и Take
Сортируйте с помощью OrderBy и ThenBy, а ограничивайте количество элементов с помощью Take.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
string[] names = new string[] { "Zoe", "Ada", "Alan", "Bob" };
var top2 = names.OrderBy(s => s.Length) // shortest first
.ThenBy(s => s) // tie-breaker
.Take(2);
foreach (string s in top2)
{
Console.WriteLine(s); // Ada, Bob
}
}
}
Проекция (анонимный тип)
Select может создавать анонимные объекты для быстрого изменения формы данных, например со свойствами «слово» и «длина».
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
string[] words = new string[] { "map", "filter", "reduce" };
var info = words.Select(w => new { Word = w, Length = w.Length });
foreach (var x in info)
{
Console.WriteLine(x.Word + " (" + x.Length + ")");
}
}
}
Отложенное выполнение
Отложенное выполнение: запрос запускается во время перебора. Изменения исходных данных до начала перебора влияют на результат.
using System;
using System.Linq;
using System.Collections.Generic;
public class Program
{
public static void Main(string[] args)
{
List<int> numbers = new List<int> { 1, 2, 3 };
var q = numbers.Where(x => x > 1); // not executed yet
numbers.Add(4); // modify source before enumeration
foreach (int x in q) // executes here
{
Console.WriteLine(x); // 2, 3, 4
}
}
}
Материализация и синтаксис
Используйте ToList/ToArray, чтобы выполнить запрос и сохранить результаты. Синтаксис запросов — это другой способ записать ту же последовательность операций.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
int[] data = new int[] { 3, 1, 2 };
// Method syntax + materialize
var sorted = data.OrderBy(x => x).ToList(); // executes now
data[0] = 100; // will not affect 'sorted' (already materialized)
foreach (int n in sorted) { Console.WriteLine(n); } // 1,2,3
// Query syntax (equivalent)
var query =
from x in data
where x < 50
select x * 2;
foreach (int n in query) { Console.WriteLine(n); } // 2,4
}
}
Что означает отложенное выполнение
Итоги
Итоги: создавайте последовательности операций с помощью Where, Select, OrderBy и Take/Skip. LINQ использует отложенное выполнение — материализуйте результаты с помощью ToList/ToArray, когда нужны стабильные данные.
Часто задаваемые вопросы
Урок «Обзор LINQ: Where, Select, OrderBy, Take/Skip; отложенное выполнение» бесплатный?
Да — полный текст урока «Обзор LINQ: Where, Select, OrderBy, Take/Skip; отложенное выполнение» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 3 уроков всего.
Чему я научусь в уроке «Обзор LINQ: Where, Select, OrderBy, Take/Skip; отложенное выполнение»?
Создавайте небольшие конвейеры LINQ над IEnumerable : фильтруйте с помощью Where, преобразуйте с помощью Select, упорядочивайте с помощью OrderBy и изучайте разницу между отложенным выполнением и мат… Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.
Сколько времени занимает урок «Обзор LINQ: Where, Select, OrderBy, Take/Skip; отложенное выполнение»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Массивы, срезы, List , Dictionary
- Шаблоны foreach и инициализаторы коллекций
- Обзор LINQ: Where, Select, OrderBy, Take/Skip; отложенное выполнение