2015-10-05 4 views
0

Есть ли способ проверить, что хотя бы один элемент появляется более одного раза в массиве, равны без последовательного сравнения каждого элемента.Проверьте, равно ли по крайней мере два элемента в массиве.

Пример: В int [] array1 = {1, 3, 4, 2, 4}; элемент 4 появляется дважды.

+1

Просьба показать некоторые данные образца и желаемый результат. – DarkKnight

+1

'if (new Set (array) .Count! = Array.Length) {...}' – dasblinkenlight

+0

@DoThanhTung: проверьте мой ответ. – DarkKnight

ответ

1

Вам просто нужно проверить, есть ли разница между исходным массивом и его версией Distinct().

var result = (array1.Count()-array1.Distinct().Count())>0; 
1

Это может сделать трюк для вас

var duplicates = array1.GroupBy(p => p).Where(g => g.Count() > 1).Select(g => g.Key); 

переменная duplicates содержит список повторяющихся элементов

EDIT

Если вы хотите, чтобы возвращаемое значение будет Логическое чем

var duplicates = array1.GroupBy(p => p).Where(g => g.Count() > 1).Select(g => g.Key).Count() > 0; 

Вы также можете сделать что-то вроде этого

if(array1.Distinct().Count() != array1.Count()) 
    return true; /// You have duplicates in the array 
else 
    return false; /// All the elements in the array are different 
+0

Извините, но я хочу сравнить в массиве. –

+0

, так как вы обновляете свой вопрос Я обновлю свой ответ –

+0

Как я могу сделать, если я хочу, чтобы возвращаемое значение было bool типа –

0

Вы можете использовать следующий код:

var isExisted = list.Count(item => item.Param == "test") >= 2; 

Пример решения в вашем случае: https://dotnetfiddle.net/1y4w9K

+0

Я отредактировал свой вопрос. В моем случае у меня нет точно такого значения, как «тест». Мне нужно только проверить, что два элемента в массиве равны. –

+0

В вашем случае «тест» равен 4, правильно? –

+0

@DoThanhTung: проверить мое редактирование :). –

1

Вы можете использовать Distinct() метод, чтобы получить уникальные значения массива и длина сравнения с исходным массивом

int[] arrayDistinctElements = array1.Distinct().ToArray(); 

if(arrayDistinctElements.length == array1.length) 
{ 
//All unique elements 
} 
else 
{ 
//Duplicates were present 
} 
Смежные вопросы