Sobes.tech
Назад к вопросам
Junior — Middle
63

Можешь показать пример использования LINQ для выполнения запросов к коллекции?

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

LINQ позволяет писать запросы к коллекциям в понятном и компактном виде. Обычно ожидают, что кандидат покажет фильтрацию, сортировку и проекцию данных. Важно также понимать, что LINQ можно использовать как в синтаксисе запросов, так и через методы-расширения.

Определение:

LINQ (Language Integrated Query) — это встроенный в C# способ выполнять запросы к коллекциям, массивам, спискам и другим источникам данных. Он позволяет отбирать нужные элементы, сортировать их, преобразовывать и группировать без ручных циклов. Чаще всего LINQ работает через цепочку методов или через SQL-подобный синтаксис.

Пример использования:

using System;
using System.Collections.Generic;
using System.Linq;

var employees = new List<Employee>
{
    new Employee { Name = "Иван", Age = 28, Salary = 120000 },
    new Employee { Name = "Анна", Age = 35, Salary = 150000 },
    new Employee { Name = "Петр", Age = 24, Salary = 90000 },
    new Employee { Name = "Ольга", Age = 31, Salary = 140000 }
};

var result = employees
    .Where(e => e.Age >= 30)
    .OrderByDescending(e => e.Salary)
    .Select(e => new { e.Name, e.Salary });

foreach (var item in result)
{
    Console.WriteLine($"{item.Name}: {item.Salary}");
}

class Employee
{
    public string Name { get; set; }
    public int Age { get; set; }
    public int Salary { get; set; }
}

Пояснение кода:

Код не требует дополнительного механизма, кроме обычной коллекции List<Employee>.

  1. Создается список сотрудников.
  2. Where(e => e.Age >= 30) оставляет только тех, кому 30 лет и больше.
  3. OrderByDescending(e => e.Salary) сортирует результат по зарплате по убыванию.
  4. Select(e => new { e.Name, e.Salary }) выбирает только имя и зарплату, создавая анонимный объект.
  5. В foreach выводятся отфильтрованные и отсортированные данные.

Ключевые моменты:

  • LINQ делает запросы к коллекциям короче и читаемее, чем ручные циклы.
  • Основные операции: фильтрация, сортировка, проекция, группировка, агрегация.
  • Запросы LINQ обычно ленивые: выполнение происходит не сразу, а при перечислении результата.
  • LINQ можно писать как через методы-расширения, так и через query syntax.
  • Для собеседования важно уметь объяснить, что Where, Select, OrderBy — это основные базовые операторы LINQ.