Skip to content

Gerando uma lista randômica com LINQ

Boa noite!

“Vira e mexe” precisamos gerar uma lista randômica (não ordenada e aleatória) para ser apresentado em alguma parte do sistema, por exemplo os imóveis de uma imobiliária na home do site e obviamente que essa lista randômica pode ser gerada no momento que os dados são buscado no banco de dados e ai é só mostrar na tela. Mas e quando precisamos fazer isso através do C#?

Eu tenho quase que certeza que quando precisei fazer isso no passado fiz da forma “tradicional”, cria um foreach e troca as posições dos itens da lista. Mas hoje através do LINQ isso já não é necessário e abaixo é descrito o código para isso:

[TestMethod]
public void CanGenerateListRadomly()
{
var numbers = new List<int> {1, 2, 3, 4, 5};
var random = new Random();
var numbersRadomly = numbers.OrderBy(n => random.Next()).ToList();

Assert.IsFalse(
numbersRadomly[0] == 1 &&
numbersRadomly[1] == 2 &&
numbersRadomly[2] == 3 &&
numbersRadomly[3] == 4);
}

Como pode ser visto eu criei uma lista de inteiro ordenada, a ideia é ter uma outra lista onde não se tenha mais essa ordenação e para isso criei o objeto random que nos auxiliará. Na terceira linha do corpo do método é criado uma nova lista, numbersRadomly, através do LINQ utilizando o método OrderBy e como parâmetro o objeto ramdom criado na linha anterior.

Como o método é de teste, na ultima linha eu testo se a nova lista criada está aleatória, por que caso contrário o teste falha.

Bom é isso, espero ter ajudado mais uma vez!

Fiquem com Deus!

Published in.Net FrameworkVisual Studio

Be First to Comment

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *