Как удалить не дубликаты из списка в С#

Я хочу сделать что-то противоположное здесь

У меня есть список, и я знаю, как удалить дубликаты. Но я хочу иметь вариант, когда пользователь может выбрать дубликат для сохранения. Некоторые queries запроса Я могу иметь список, который будет показывать только дубликаты. Что-то вроде:

Давайте скажем, что мой список:

"Том" "Боб" "Фрэнк" "Боб" "Лэйси" "Фрэнк"

Я знаю, что если я использую отличный метод, я получу:

"Том" "Боб" "Фрэнк" "Лэйси"

Я не знаю, какой метод мне нужно использовать:

"bob" "bob" "откровенный" "откровенный"

или получить

"bob" "откровенный"

вызывают те, которые повторяются.

Ответы

Ответ 1

Вы можете использовать GroupBy, чтобы отфильтровать элементы, которые встречаются только один раз, затем сгладить оставшиеся элементы обратно в список:

var resultList = list.GroupBy(x => x)
                     .Where(g => g.Count() > 1)
                     .SelectMany(g => g)
                     .ToList();

Ответ 2

Мне нужно было сравнить их по определенному свойству до этого, я просто изменил ваш запрос BrokenGlass на

var resultList = itemsThatNeedToBeAdded.GroupBy(x => x.property1)
                     .Where(g => g.Count() > 1 )
                     .SelectMany(g => g)
                     .ToList();