#c# #linq #list
#c# #linq #Список
Вопрос:
Если у меня есть такой список:
List<int> test = new List<int>{1, 1, 2, 2, 3, 3, 4, 4, 5, 6 , 7 , 7 , 7};
Затем с помощью .Метод Distinct():
var distinctTest = test.Distinct();
Список результатов будет выглядеть следующим образом:
{ 1, 2, 3, 4, 5, 6, 7 }
Как я могу создать отдельный список элементов, подобный этому: { 5, 6 }
Комментарии:
1. Я уверен, что это должно быть дубликатом, но я не могу быстро его найти…
test.GroupBy(x => x).Where(g => g.Count() == 1).Select(g => g.Key)
Ответ №1:
Итак, вы хотите удалить все элементы, которые являются дубликатами?
Вы можете использовать GroupBy
:
var distinctTest = test
.GroupBy(i => i)
.Where(g => g.Count() == 1)
.Select(g => g.Key);
Ответ №2:
test.Select(x => x).Distinct();
Это вернет последовательность (IEnumerable) ваших значений — по одному на каждое уникальное значение.
Комментарии:
1. Вы, кажется, неправильно истолковали вопрос — OP уже сказал, что они этого не хотят. Не уверен, кто поддержал это — это просто неправильно.