Удалить все повторяющиеся номера в ArrayList C# - PullRequest
0 голосов
/ 13 апреля 2020

У меня возникли проблемы с кодом отслеживания. Я должен удалить все повторяющиеся числа в ArrayList и распечатать их. Например: ввод: 11123345 вывод: 245. Этот код удаляет все повторы, но оставляет одно из них: ввод: 11123345 вывод: 12345;

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

class Program
{
    static void Main()
    {
        List<int> list = new List<int>();

        Console.WriteLine("Number: ");

        int num = int.Parse(Console.ReadLine());

        while (num > 0)
        {
            list.Add(num % 10);
            num /= 10;
        }

        list.Reverse();

        List<int> distinct = list.Distinct().ToList();

        PrintValues(distinct);

        static void PrintValues(IEnumerable distinct)
        {
            foreach (object value in distinct)
                Console.Write("{0}", value);
            Console.WriteLine();
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Надеюсь, ответа Рад будет достаточно для вашего вопроса.

Вот полный рабочий код:

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

class Program
{
    static void Main()
    {
        List<int> list = new List<int>();

        Console.WriteLine("Number: ");

        int num = int.Parse(Console.ReadLine());

        while (num > 0)
        {
            list.Add(num % 10);
            num /= 10;
        }

        list.Reverse();

            var distinct = list.GroupBy(x => x) 
                   .Where(y => y.Count() == 1) //It'll count numbers which have single number sequence like 1 2 3 ,etc. but for double number sequence like 22 33 44 ,etc. change Count() == 2                                            
                   .Select(y => y.Key).ToList();
            foreach (object value in distinct)
                Console.Write("{0}", value);
                Console.WriteLine();
                Console.ReadLine();
    }
}
0 голосов
/ 13 апреля 2020

Предполагая, что list имеет значения, для которых вы хотите удалить дубликаты, этот код должен дать вам желаемое

var distinct = list.GroupBy(x => x)         // Group by the items in the list
           .Where(g => g.Count() == 1)      // Filter only elements with a count of 1
           .Select(g => g.Key).ToList();    // Project them into a new list
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...