Busca Online:

 
Seja bem vindo(a) Visitante, você não está logado deseja logar
no portal para participar de serviços e promoções ? clique aqui.


No caso de perder a senha, acesse aqui e receba por e-mail.
Deseja entrar em contato conosco, acesse aqui e mande-nos um e-mail.

Utilizando método Sort em uma lista genérica

por Ebenézer de Souza em 17/8/2010

Olá a todos, irei mostrar neste artigo como utilizar ométodo Sort para ordenar uma lista genérica utilizando a delegate Comparison. Nesteexemplo estarei utilizando o Visual Studio 2008 e .NET Framework 3.5.

Neste primeiro momento vamos criar um objeto com o nomeAluno e prepará-lo para fazer a ordenação. Crie um novo WebSite e acrescente uma nova classe com o nome Alunoconforme imagem abaixo:

Na classe Aluno digite o seguinte código:

///

/// Classe do objeto Aluno

///

public class Aluno

{

///

/// Construtor Default

///

publicAluno()

{ }

///

/// Construtor que já carrega as propriedade

///

/// Nome do Aluno

/// Idade do Aluno

publicAluno(string nome, intidade)

{

Nome = nome;

Idade = idade;

}

///

/// Propriedade Nome do Aluno

///

public string Nome { get; set; }

///

/// Propriedade Idade do Aluno

///

public int Idade { get; set; }

}

Para que possamos utilizar a delegate Comparion vamosacrescentar mais dois métodos na classe usuário, uma para fazer a comparação donome e outro para idade, ou seja, para fazer a ordenação tanto pelo nome comopela idade do aluno. Acrescente os doismétodos abaixo:

///

/// Executa a comparação entre os nomes para ordenação

///

///

///

///

public static intOrdenaPorNome(Aluno al1, Aluno al2)

{

returnal1.Nome.CompareTo(al2.Nome);

}

///

/// Executa a comparação entre as idades para ordenação

///

///

///

///

public static intOrdenaPorIdade(Aluno al1, Aluno al2)

{

returnal1.Idade.CompareTo(al2.Idade);

}

Com isto o nosso objeto está preparado para ser ordenado. Para testarmos vamos criar uma lista deAlunos. No método Page_Load da páginaDefault.aspx digite o seguindo código:

// Cria lista deAlunos

List<Aluno> alunos = newList<Aluno>();

// Adicionavários alunos na lista

alunos.Add(new Aluno("Denis", 17));

alunos.Add(new Aluno("João", 16));

alunos.Add(new Aluno("Alberto", 20));

alunos.Add(new Aluno("Maurício", 13));

alunos.Add(new Aluno("Caio",15));

Antes de prosseguir neste método vamos criar outro métodoque irá receber como parâmetro uma string informando se é para ordenar pelonome ou pela idade. Segue o método abaixo:

///

/// Método que retorna a comparação para ordenar a lista

///

/// Ordenar Por

/// Comparação entre osalunos

private Comparison<Aluno>getComparison(string ordenar_por)

{

// Verifica se épara ordenar por nome ou por idade

if(ordenar_por.Equals("Nome"))

{

// Retornaordenação por Nome

return new Comparison<Aluno>(Aluno.OrdenaPorNome);

}

else

{

// Retornaordenação por Idade

return new Comparison<Aluno>(Aluno.OrdenaPorIdade);

}

}

Veja neste método que de acordo com o que é para ordenar eleretorna uma nova comparação de aluno passando o método static criado na classeusuário.

Prosseguindo no método Page_Load vamos utilizar agora ométodo Sort da lista de alunos passandocomo parâmetro o retorno do métodogetComparison que acabamos de criar e ao chamar o método getComparison iremos passar a string com o valor nome. Vejaa linha de código para isso:

// Adiciona nométodo sort a ordenação por nome.

alunos.Sort(getComparison("Nome"));

Agora precisamos exibir a lista para verificarmos que tevesucesso a ordenação. Para isso segue o código abaixo:

// Percorre cadaaluno da lista

foreach (Aluno aluno inalunos)

{

// Escreve na telao Nome do aluno e a Idade

Response.Write("Nome:" + aluno.Nome + " Idade: "+ aluno.Idade.ToString() + "
"
);

}

Execute o site e veja na imagem abaixo comodeverá ser exibido na tela:

Veja que a lista foi ordenada pelo nome do aluno conformepedimos. Como nesse exemplo também tem a possibilidade de ordenar por idade,basta alterar o parâmetro do método getComparison para idade e executarnovamente que você terá o seguinte resultado:

Espero ter ajudado, qualquer dúvida ou sugestões comentem pelo site.

Obrigado e até a próxima.

voltar   comente  subir

Download Copy





 
Ebenézer de Souza Possui Superior em Bacharelado em Sistemas de informação e é desenvolvedor de aplicações e sistemas web na plataforma .NET. Atua como analista/programador na Corretora de Seguros BRB e escreve artigos para comunidade ECodigo.com.br



Comentários:


Comente (dê sua opinião):

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Criando parâmetros não obrigatórios em procedures
Adicionar primeiro dados em um GridView e depois na base de dados usando Transaction.
Criar um post de Mensagens sem utilizar banco de dados e sim arquivos.
Pesquisando informações que estejam entre as datas Informadas com Stored Procedure.
Criando uma DLL de acesso a dados Genérica utilizando o namespace System.Data.Comom
Utilizando método Sort em uma lista genérica
Neste artigo irei mostrar como utilizar o controle ImageMap que veio na versão 2.0 do Asp.NET.
Utilizando DLL de acesso a dados genérica – Parte 1
Criando um método para exibir vários alerts na tela




eCode10 Magazine 4 Edição

Baixe a sua sem pagar nada, basta apenas ter um cadastro na comunidade aspneti.com ou ser usuário do ecode10.com.



Edições anteriores
LAYERDEV

Notícias *

Notebook 3D ou 4K?

Notebook vem com tudo...

Visão do Futuro - Day of Glass 2

Futuro próximo pode chegar cedo?...

Lenovo de 14 polegadas IdeaPad

Veja o novo notebook Lenovo IdeaPad...

Windows 8 Store

Channel9 publica um vídeo da Windows Store...

Sony Vaio série Z

Novo Vaio Ultrabook? ou não Ultrabook?...

Samsung quer comprar RIM

Imagine se juntar as duas companhias...

Surface 2.0 mostrado

Novo Surface é mostrado de forma incrível...

Skype Tablet

Será que esse skype tablet pega mesmo?...

Lenovo e o seu novo Ultrabook

Ultrabook chega também pela Lenovo...




NETITC