Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

hmoleman

[Resolvido] Descobrir numeros repetidos no Array com LINQ

Recommended Posts

Por curiosidade fiz esse código para descobrir os numeros repetidos no Array, existe alguma forma de fazer o mesmo com o LINQ ?

 

int[] numeros = new int[7]{8, 2, 102, 12, 52, 6, 6};// o array a ser vasculhado


            for (int i = 0; i < numeros.Length; i++)
            {
                for (int j = 0; j < numeros.Length ; j++)
                {
                    if (numeros[i] == numeros[j] && i != j)
                    {
                        Console.WriteLine(numeros[i] + " é repetido");
                    }
                }

            }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou assim o meu:

 

var result = (from n in numeros
                         where numeros.Count(n1 => n1 == n) >= 2
                         select n).Distinct();
            foreach (int num in result)
                Console.WriteLine(num + " é repetido");

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ficou assim o meu:

 

var result = (from n in numeros
                         where numeros.Count(n1 => n1 == n) >= 2
                         select n).Distinct();
            foreach (int num in result)
                Console.WriteLine(num + " é repetido");

realmente dá certo Oenning, poderia comentar essa linha?

 

numeros.Count(n1 => n1 == n) >= 2

 

obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Count é um método presente em todos os arrays, certo?

Se você fizer apenas numeros.Count() ele vai te retornar a quantidade de números em seu array.

Porem esse método possui uma sobrecarga que aceita uma lambda [1] como parâmetro.

O que estou fazendo ali é contar a quantidade de números n dentro do array, e depois vejo se é maior ou igual a dois, ou seja, se o array possui mais de dois elementos n, se sim, é porque está repetido.

 

[1] http://www.fbelmonte.com.br/BLOG/?tag=/lambda-expressions

Compartilhar este post


Link para o post
Compartilhar em outros sites

Count é um método presente em todos os arrays, certo?

Se você fizer apenas numeros.Count() ele vai te retornar a quantidade de números em seu array.

Porem esse método possui uma sobrecarga que aceita uma lambda [1] como parâmetro.

O que estou fazendo ali é contar a quantidade de números n dentro do array, e depois vejo se é maior ou igual a dois, ou seja, se o array possui mais de dois elementos n, se sim, é porque está repetido.

 

[1] http://www.fbelmonte.com.br/BLOG/?tag=/lambda-expressions

 

Muito interessante Oenning, valew.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.