Visual Studio C# просмотреть вывод - PullRequest
0 голосов
/ 20 апреля 2020

Работа со строкой, дедупликация и обнаружение, что при перестроении и запуске консоль закрывается, и я не вижу, что это за строка.

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

namespace StringPrintDuplicates
{
class Program
{
    public static void DedupString(List<string> duplicatesString)
    {
        List<string> distinctList = duplicatesString.Distinct().ToList();
        foreach(string deduped in distinctList) {
            Console.WriteLine("{0}",deduped);
        }
    }
    static void Main()
    {
        List<string> list = new List<string>();
        list.Add("t");
        list.Add("a");
        list.Add("l");
        list.Add("k");
        list.Add("j");
        list.Add("l");
        list.Add("l");
        list.Add("k");
        list.Add("k");
        list.Add("s");
        list.Add("s");
        list.Add("h");
        list.Add("h");
        list.Add("o");
        list.Add("e");
        Console.WriteLine("The input is: {0} ", list.ToString());
        DedupString(list);
    }
   }
 }

Когда я запускаю это, я не получаю ошибки и на выходе должны быть буквы, которые дублируются в списке. Я использую 2019 и настроен на останов консоли при отладке, а также не использую «Просто мой код», но ничего не вижу. Это должно вернуть "lk sh".

Ответы [ 3 ]

1 голос
/ 20 апреля 2020

StyleZ и Chandru верны -. Кроме того, начиная с C # 3, вы можете инициализировать свои списки следующим образом:

var list = new List<string>() { "t", "a", "l", "k", "j", "l", "l", "k", "k", "s", "s", "h", "h", "o", "e" };

Это может быть легче писать и читать.

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

Альтернативный способ (возможно, более простой) 1) Вы можете изменить метод DedupString, как показано ниже, для отображения только повторяющихся записей:

    public static void DedupString(List<string> duplicatesString)
    {
        List<string> distinctList = duplicatesString.Distinct().ToList();
        foreach (string deduped in distinctList)
        {                
            if(duplicatesString.FindAll(x => x.Equals(deduped)).Count > 1)
            {
                Console.WriteLine("{0}", deduped);
            }
        }
    }

2) Добавьте Console.ReadLine(); в конце Main(), чтобы запретить консоли закрытие. Только после нажатия клавиши ввода консоль закроется.

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

Есть несколько проблем, которые я вижу сразу после того, как заметил код.

  1. Distinct() - это ключевое слово для удаления всех дубликатов
  2. Ваш list.ToString() точно не будет работать, причина в том, что вы хотите объединить все строки вместе. Для этого вы должны использовать Aggregate().

Если вы действительно хотите вернуть только те, которые являются дубликатами, вы хотите сделать что-то вроде этого:

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


namespace ConsoleApp1
{
    class Program
    {
        public static void DedupString(List<string> duplicatesString)
        {
            List<string> distinctList = duplicatesString.Distinct().ToList();
            foreach(string deduped in distinctList) {
                Console.Write("{0}",deduped);
            }
            Console.WriteLine("");
        }

        public static void DuplicitsOnly(List<string> duplicatesString)
        {
            var distinctList = duplicatesString.GroupBy(x => x).Where(x => x.Count() > 1).Select(x => x.Key).ToList();
            foreach(string deduped in distinctList) {
                Console.Write("{0}",deduped);
            }
            Console.WriteLine("");
        }

        static void Main()
        {
            List<string> list = new List<string>();
            list.Add("t");
            list.Add("a");
            list.Add("l");
            list.Add("k");
            list.Add("j");
            list.Add("l");
            list.Add("l");
            list.Add("k");
            list.Add("k");
            list.Add("s");
            list.Add("s");
            list.Add("h");
            list.Add("h");
            list.Add("o");
            list.Add("e");
            Console.WriteLine("The input is: {0} ", list.Aggregate("", (x, y) => x + y));
            DedupString(list);
            DuplicitsOnly(list);
        }
    }
}

Также о закрытии консоли ... У меня была такая же проблема ... в правом нижнем углу вы должны увидеть "Вывод приложения" ... Я не знаю, как это исправить наверняка, но именно так я нашел console :) (или просто sma sh a ReadLine (); в en файла ... что тоже надо работать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...