← Назад к вопросам

Какие знаешь метода в LINQ?

2.0 Middle🔥 122 комментариев
#Основы C# и .NET

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Основные методы LINQ в C#

LINQ (Language Integrated Query) предоставляет богатый набор методов для работы с коллекциями и данными. Методы можно разделить на несколько категорий.

1. Методы фильтрации и выборки

Эти методы позволяют фильтровать последовательности данных.

// Where - фильтрация по условию
var numbers = new List<int> { 1, 2, 3, 4, 5 };
var evenNumbers = numbers.Where(n => n % 2 == 0); // 2, 4

// Take - взять первые N элементов
var firstThree = numbers.Take(3); // 1, 2, 3

// Skip - пропустить первые N элементов
var skipTwo = numbers.Skip(2); // 3, 4, 5

// TakeWhile / SkipWhile - с условием
var takeWhileLessThanFour = numbers.TakeWhile(n => n < 4); // 1, 2, 3

2. Методы проекции и трансформации

Преобразуют элементы последовательности.

// Select - преобразование каждого элемента
var squared = numbers.Select(n => n * n); // 1, 4, 9, 16,活 25

// SelectMany - "разворачивает" коллекции
var nestedLists = new List<List<int>> { new List<int> {1, 2}, new List<int> {3} };
var flattened = nestedLists.SelectMany(list => list); // 1, 2, 3

3. Методы агрегации и вычисления

Выполняют вычисления над всей последовательностью.

// Sum, Average, Min, Max, Count
var sum = numbers.Sum(); // 15
var average = numbers.Average(); // 3
var count = numbers.Count(); // 5

// Aggregate - пользовательская агрегация
var product = numbers.Aggregate(1, (acc, n) => acc * n); // 120 (1*2*3*4*5)

4. Методы группировки и сортировки

Организуют данные в группы или упорядочивают их.

// GroupBy - группировка по ключу
var people = new List<Person> { /* данные */ };
var groupedByAge = people.GroupBy(p => p.Age);

// OrderBy / OrderByDescending - сортировка
var sortedNumbers = numbers.OrderBy(n => n); // 1, 2, 3, 4, 5
var descending = numbers.OrderByDescending(n => n); // 5, 4, 3, 2, 1

5. Методы соединения и сравнения

Работают с несколькими последовательности.

// Join - аналогично JOIN в SQL
var customers = new List<Customer>();
var orders = new List<Order>();
var joined = customers.Join(orders, 
    c => c.Id, 
    o => o.CustomerId, 
    (c, o) => new { CustomerName = c.Name, OrderId = o.Id });

// Union, Intersect, Except - операции с множествами
var set1 = new List<int> { 1, 2, 3 };
var set2 = new List<int> { 3, 4, 5 };
var union = set1.Union(set2); // 1, 2, 3, 4, 5

6. Методы проверки существования и получения элементов

Проверяют условия и получают конкретные элементы.

// Any, All, Contains - проверка условий
var hasEven = numbers.Any(n => n % 2 == 0); // true
var allPositive = numbers.All(n => n > 0); // true
var containsThree = numbers.Contains(3); // true

// First, FirstOrDefault, Single, SingleOrDefault - получение элементов
var firstEven = numbers.First(n => n % 2 == 0); // 2
var firstOrDefault = numbers.FirstOrDefault(n => n > 10); // 0 (default)

7. Методы преобразования типов

Изменяют тип коллекции.

// ToArray, ToList - преобразование в массивы и списки
var array = numbers.ToArray();
var list = numbers.ToList();

// ToDictionary, ToLookup - создание словарей и Lookup
var dict = people.ToDictionary(p => p.Id);
var lookup = people.ToLookup(p => p.Department);

8. Дополнительные полезные методы

// Distinct - удаление дубликатов
var distinct = new List<int> { 1, 2, 2, 3 }.Distinct(); // 1, 2, 3

// Zip - объединение двух последовательностей
var letters = new List<char> { 'A', 'B', 'C' };
var zipped = numbers.Zip(letters, (n, l) => $"{n}{l}"); // "1A", "2B", "3C"

Ключевые особенности

  • Отложенное выполнение (Deferred Execution) - многие методы (Where, Select) не выполняются сразу, а только при итерации или вызове методов типа ToList()
  • Немедленное выполнение (Immediate Execution) - методы агрегации (Sum, Count) и преобразования (ToList, ToArray) выполняются сразу
  • Композиция методов - методы LINQ можно легко комбинировать, создавая сложные запросы
  • Два стиля использования - синтаксис методов (Method Syntax) и синтаксис запросов (Query Syntax)

LINQ значительно упрощает обработку данных в C#, делает код более читаемым и выразительным, а также позволяет эффективно работать с различными источниками данных (коллекции, XML, базы данных через Entity Framework).

Какие знаешь метода в LINQ? | PrepBro