Есть несколько проблем, которые я вижу сразу после того, как заметил код.
Distinct()
- это ключевое слово для удаления всех дубликатов - Ваш
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 файла ... что тоже надо работать)