Select, Where, OrderBy, Take/Skip
Фильтруйте с помощью Where, преобразуйте с помощью Select, сортируйте с помощью OrderBy/ThenBy и разбивайте результаты на страницы с Take/Skip. Простые и понятные цепочки.
«Select, Where, OrderBy, Take/Skip» — бесплатный урок C# Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C# Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C# Academy содержит 3 уроков всего.
Роли операторов
Роли:
- Where фильтрует
- Select преобразует
- OrderBy/ThenBy сортируют
- Take/Skip разбивают результаты на страницы
Сохраняйте цепочки короткими и понятными.
Фильтрация с помощью Where
Where оставляет элементы, удовлетворяющие условию (предикату).
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
int[] nums = new int[] { 1, 2, 3, 4, 5, 6 };
var evens = nums.Where(n => n % 2 == 0);
foreach (int n in evens)
{
Console.WriteLine(n); // 2 4 6
}
}
}
Проекция с помощью Select
Select преобразует каждый элемент в новое значение (проекцию).
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
string[] words = new string[] { "cat", "lion", "tiger" };
var lengths = words.Select(w => w.Length); // transform to lengths
foreach (int len in lengths)
{
Console.WriteLine(len); // 3 4 5
}
}
}
Сортировка результатов
Используйте сначала OrderBy, а затем ThenBy для сортировки по нескольким ключам; при необходимости добавляйте сортировку по убыванию.
using System;
using System.Linq;
public sealed class City
{
public string Name;
public int Population;
public City(string name, int pop) { Name = name; Population = pop; }
}
public class Program
{
public static void Main(string[] args)
{
City[] cities = new City[]
{
new City("Rome", 2873000),
new City("Oslo", 634000),
new City("Riga", 605000),
new City("Rio", 6748000)
};
var sorted = cities
.OrderBy(c => c.Name) // primary
.ThenByDescending(c => c.Population); // secondary
foreach (City c in sorted)
{
Console.WriteLine(c.Name + " - " + c.Population);
}
}
}
Разбиение на страницы с помощью Take/Skip
Skip пропускает элементы; Take возвращает фиксированное количество. Вместе они реализуют разбиение на страницы.
using System;
using System.Linq;
public class Program
{
public static void ShowPage(int[] data, int page, int pageSize)
{
var pageItems = data
.OrderBy(x => x) // define a consistent order
.Skip((page - 1) * pageSize)
.Take(pageSize);
Console.WriteLine("Page " + page + ":");
foreach (int x in pageItems) Console.WriteLine(x);
}
public static void Main(string[] args)
{
int[] nums = new int[] { 9, 1, 5, 2, 7, 3, 8, 6, 4 };
ShowPage(nums, 1, 3); // 1 2 3
ShowPage(nums, 2, 3); // 4 5 6
}
}
Советы по созданию цепочек
Советы:
- Рано выполняйте фильтрацию с помощью Where.
- Выполняйте проекцию поздно, с помощью Select (после фильтрации и сортировки).
- Используйте OrderBy перед Take/Skip для предсказуемых результатов.
- Делайте каждый шаг небольшим и давайте ему понятное имя.
Название оператора фильтрации
Повторение
Повторение: используйте Where для фильтрации, Select для проекции, OrderBy/ThenBy для сортировки и Take/Skip для разбиения на страницы. Сохраняйте pipeline небольшими и понятными.
Часто задаваемые вопросы
Урок «Select, Where, OrderBy, Take/Skip» бесплатный?
Да — полный текст урока «Select, Where, OrderBy, Take/Skip» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C# Academy, подпишись на CoddyKit PRO. Курс C# Academy содержит 3 уроков всего.
Чему я научусь в уроке «Select, Where, OrderBy, Take/Skip»?
Фильтруйте с помощью Where, преобразуйте с помощью Select, сортируйте с помощью OrderBy/ThenBy и разбивайте результаты на страницы с Take/Skip. Простые и понятные цепочки. Ты практикуешь C# Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C# Academy?
Предыдущий опыт не требуется. C# Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.
Сколько времени занимает урок «Select, Where, OrderBy, Take/Skip»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C# Academy?
Да. Каждый урок C# Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Конвейеры IEnumerable и отложенное выполнение
- Select, Where, OrderBy, Take/Skip
- Синтаксис запросов и синтаксис методов