Как удалить дубликаты из массива в C#?

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

от jensen , в категории: Другие , 2 года назад

Как удалить дубликаты из массива в C#?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от NicolasSsh , 2 года назад

@jensen  Для того, чтобы удалить дубликаты из массива, Вы можете воспользоваться пространством имен System.Linq и System.Collections.Generic, а так же методом .Distinct()


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

namespace dublicates
{
    class Program
    {
        static void Main(string[] args)
        {
            List<string> array = new List<string>() {"Apples", "Bananas", "Oranges", "Kiwies", "Apples", "Apples", "Bananas"};

            List<string> new_array = new List<string>(array.Distinct());

            foreach (string element in new_array)
            {
                Console.WriteLine(element);
            }

            // Вывод : 
            // Apples
            // Bananas
            // Oranges
            // Kiwies
        }
    }
}

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

от brook , год назад

@jensen 

Для удаления дубликатов из массива в C# можно использовать методы класса System.Linq.Enumerable. Вот пример кода:

1
2
3
4
5
6
7
8
9
using System.Linq;

// исходный массив с дубликатами
int[] array = new int[] { 1, 2, 3, 2, 4, 1, 5 };

// удаляем дубликаты
int[] uniqueArray = array.Distinct().ToArray();

// uniqueArray содержит { 1, 2, 3, 4, 5 }


Метод Distinct() возвращает новую последовательность, содержащую только уникальные элементы из исходного массива. Затем метод ToArray() преобразует эту последовательность обратно в массив. Результирующий массив uniqueArray будет содержать только уникальные элементы исходного массива.


Обратите внимание, что тип элементов в массиве должен быть совместим с интерфейсом IEquatable<T> или должен иметь реализацию интерфейса IEqualityComparer<T>, чтобы метод Distinct() мог определить, что элементы являются уникальными. Если тип элементов не поддерживает эти интерфейсы, то можно создать свой класс, реализующий интерфейс IEqualityComparer<T> и передать его в качестве аргумента в метод Distinct().