Изучение ключевого слова LINQ «into»: операции объединения и выбора групп

Ключевое слово «into» в LINQ используется в синтаксисе запроса для выполнения группового соединения или соединения, за которым следует операция выбора. Он позволяет вам создать временную переменную, которая представляет результаты объединения или объединения группы, а затем использовать эту переменную в последующих операциях запроса.

Вот несколько методов LINQ, использующих ключевое слово «into»:

  1. GroupJoin: этот метод выполняет групповое объединение двух последовательностей на основе ключа и возвращает последовательность групп. Ключевое слово “into” используется для создания временной переменной для хранения групп.
var customers = new[]
{
    new { Id = 1, Name = "John" },
    new { Id = 2, Name = "Jane" },
    new { Id = 3, Name = "Bob" }
};
var orders = new[]
{
    new { CustomerId = 1, Product = "Phone" },
    new { CustomerId = 1, Product = "Laptop" },
    new { CustomerId = 3, Product = "Tablet" }
};
var query = from customer in customers
            join order in orders on customer.Id equals order.CustomerId into customerOrders
            select new { Customer = customer, Orders = customerOrders };
foreach (var result in query)
{
    Console.WriteLine($"Customer: {result.Customer.Name}");
    foreach (var order in result.Orders)
    {
        Console.WriteLine($"Order: {order.Product}");
    }
}
  1. Join: этот метод выполняет внутреннее соединение двух последовательностей на основе ключа и возвращает последовательность совпадающих элементов. Ключевое слово “into” используется для создания временной переменной для хранения совпадающих элементов.
var customers = new[]
{
    new { Id = 1, Name = "John" },
    new { Id = 2, Name = "Jane" },
    new { Id = 3, Name = "Bob" }
};
var orders = new[]
{
    new { CustomerId = 1, Product = "Phone" },
    new { CustomerId = 1, Product = "Laptop" },
    new { CustomerId = 3, Product = "Tablet" }
};
var query = from customer in customers
            join order in orders on customer.Id equals order.CustomerId into customerOrders
            select new { Customer = customer, Orders = customerOrders };
foreach (var result in query)
{
    Console.WriteLine($"Customer: {result.Customer.Name}");
    foreach (var order in result.Orders)
    {
        Console.WriteLine($"Order: {order.Product}");
    }
}
  1. SelectMany: этот метод выполняет перекрестное или проекционное соединение двух последовательностей и возвращает одну сглаженную последовательность. Ключевое слово “into” используется для создания временной переменной для хранения объединенных элементов.
var numbers1 = new[] { 1, 2, 3 };
var numbers2 = new[] { 10, 20, 30 };
var query = from num1 in numbers1
            from num2 in numbers2
            select new { Number1 = num1, Number2 = num2 } into result
            where result.Number1 + result.Number2 > 15
            select result;
foreach (var result in query)
{
    Console.WriteLine($"Number1: {result.Number1}, Number2: {result.Number2}");
}