2012-05-31 3 views
2

Можно создать дубликат:
Remove duplicates from arrayКак удалить повторяющиеся значения в массиве?

У меня есть целочисленный массив, который содержит определенное количество элементов, все положительные. Я хочу получить массив из этого, где все элементы появляются только один раз. например Если первый массив был чем-то вроде {2000,2011,2011,2012,2009,2009,2000}, я хочу получить это {2000,2011,2012,2009}. Как я могу это сделать? Я пробовал много вещей для циклов, но я не могу ничего сделать.

ответ

6

вы можете сделать ниже

var yourArray = yourArray.Distinct().ToArray(); 

http://msdn.microsoft.com/en-us/library/system.linq.enumerable.distinct.aspx

+0

Это будет только создать IEnumerable, а не массив. Чтобы вернуть новый массив, вам нужно вызвать ToArray на результат. Что-то вроде: 'yourArray = yourArray.Distinct(). ToArray();' – Wormbo

+0

Я отредактировал свой ответ, даже если это было просто дать OP правильное направление для перехода –

+0

Обратите внимание, что значение, возвращаемое 'Distinct', не является гарантированно будет заказано. Если вы хотите, чтобы он был упорядочен по значениям, используйте 'yourArray.Distinct(). OrderBy (x => x) .ToArray()'. Если поддерживать первоначальный порядок вставки важно (как может показаться в вашем примере), вы можете использовать более медленный вариант, например Efthimis (но я бы рекомендовал «Список ' over' ArrayList', который устарел). –

0

В дополнение к другим ответам вы можете посмотреть на HashSet, особенно если вы знаете заранее, у вас будут повторяющиеся значения.

2

Альтернативный способ:

int[] _array = new int[] {1, 2, 1,2} 
    var myArray = new System.Collections.ArrayList(); 

    foreach(var item in _array){ 
     if (!myArray.Contains(item)) 
      myArray.Add(item); 
    } 
Смежные вопросы