Как получить пересечение нескольких коллекций средствами linq?

Пользователь

от nicolette.stoltenberg , в категории: Другие , 5 месяцев назад

Как получить пересечение нескольких коллекций средствами linq?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от amber_moore , 5 месяцев назад

@nicolette.stoltenberg 

Для получения пересечения нескольких коллекций с помощью LINQ можно воспользоваться методом Intersect. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
using System;
using System.Linq;
using System.Collections.Generic;

class Program
{
    static void Main(string[] args)
    {
        var collection1 = new List<int> { 1, 2, 3, 4, 5 };
        var collection2 = new List<int> { 4, 5, 6, 7, 8 };
        var collection3 = new List<int> { 5, 6, 7, 8, 9 };

        var intersection = collection1.Intersect(collection2).Intersect(collection3);

        Console.WriteLine("Пересечение коллекций: ");
        foreach (var item in intersection)
        {
            Console.WriteLine(item);
        }
    }
}


В этом примере создаются три коллекции с целыми числами. Затем, с помощью метода Intersect, вычисляется пересечение этих коллекций. Результат выводится на консоль.


Результат выполнения данного кода будет:

1
2
Пересечение коллекций:
5


Таким образом, пересечение коллекций collection1, collection2 и collection3 состоит только из элемента 5. Обратите внимание, что порядок элементов в результирующей последовательности может отличаться от порядка элементов в исходных коллекциях.