2013-10-11 4 views
1

Как сделать массив содержащим число только один раз? Из любых случайных чисел, добавленных в текстовое поле, мне нужно сначала преобразовать их в ints, а затем с разделителем я сделаю программу понятной для отдельного ints, но как мне подсчитать int в списке результатов ints только один раз? МетодСодержит число только один раз в массиве

ответ

9

Вы могли бы начать с использованием HashSet в качестве типа коллекции (.NET 3.5 и выше) , Это запретит дублирование значений. Затем, если вы не можете использовать HashSet как есть, вы можете вызвать .ToArray на нем.

То есть:

HashSet<int> 
0

Использовать Linq в Distinct для удаления дубликатов:

var numbers = new[] { 1, 2, 2, 3 }; 
numbers = numbers.Distinct().ToArray(); // 1, 2, 3 
0

Вы можете использовать Array.Contains, чтобы проверить, если элемент уже существует в массиве. Однако я бы предложил использовать общую коллекцию, такую ​​как Список или Словарь.

2

Вы можете использовать метод Distinct

input.Split(new char[]{separator},StringSplitOptions.RemoveEmptyEntries) 
    .Select(x=>int.Parse(x)) 
    .Distinct(); 

Если вы хотите, чтобы избежать LINQ

var array=input.Split(new char[]{separator},StringSplitOptions.RemoveEmptyEntries); 
var set=new HashSet<int>(); 
foreach(var x in array)set.Add(int.Parse(x)); 
var unique=set.ToArray(); 
+0

Спасибо за усилия, но i'am своего рода новичка, и я все еще пытаюсь избегайте LINQ, пугает меня по какой-то причине. –

+0

@ ХристоХристов проверить изменения – Anirudha

0

метод Check LINQ Distinct

Пример использования:

List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 }; 

      IEnumerable<int> distinctAges = ages.Distinct(); 

      Console.WriteLine("Distinct ages:"); 

      foreach (int age in distinctAges) 
      { 
       Console.WriteLine(age); 
      } 

      /* 
      This code produces the following output: 

      Distinct ages: 
      21 
      46 
      55 
      17 
      */ 
Смежные вопросы