LINQ: возвращает неповторяющиеся элементы в списке

#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 уже сказал, что они этого не хотят. Не уверен, кто поддержал это — это просто неправильно.