2017-01-06 2 views
0

У меня есть List<Employee> employees который содержит имущество CategoryID. Я хочу извлечь эти категории в List<int> employeeCategories.Как получить список недвумерных значений из одного объекта недвижимости

Я попробовал это, но я получаю дубликаты категории:

List<int> employeeCategories = employees.Select(x => x.CategoryID).ToList(); 

Я хочу, чтобы все эти категории, но не дублировать.

Я пытался сделать это:

List<int> employeeCategories = employees.GroupBy(x => x.CategoryID).Select(x => x.First()).Select(x => x.CategoryID).ToList(); 

Есть более простые и экологически чистые способы для достижения этой цели? Правильно ли я использую метод GroupBy?

Заранее спасибо.

+0

Честно говоря, я так и делаю это. Использование расширения LINQ Distinct() часто не работает так, как я этого хочу. – maccettura

+1

Вы можете упростить это для GroupBy (x => x.CategoryID). Выберите (g => g.Key) .ToList(); '. Результатом «GroupBy» является «IGrouping», где каждый элемент имеет «ключ», который является уникальным значением того, что вы группировали. – juharr

+0

@juharr Интересно. Спасибо. –

ответ

6

Это то, что Distinct() для. Он удаляет все повторяющиеся записи.

List<int> employeeCategories = employees.Select(x => x.CategoryID).Distinct().ToList(); 
Смежные вопросы