ORDENAR LIST

DAMASCENO.CESAR 08/06/2015 16:30:23
#447517
boa tarde, estou trabalhando com list para buscar dados no BD, e preciso ordenar os dados por diferentes campos, até aí tudo bem, mas quando tento ordenar com dois campos ao mesmo tempo, não dá certo, abaixo segue o código que estou usando:
Dim Pop as list (of Populacao)
abasteço o list
Pop.Sort(Function(p1 As Populacao, p2 As Populacao) p2.Nome.CompareTo(p1.Nome) + p2.Sobrenome.CompareTo(p1.Sobrenome) )

neste caso está em ordem decrescente
se puderem me ajudar
KERPLUNK 08/06/2015 17:51:15
#447519
Resposta escolhida
Se você quer só ordenar, use uma expressão lambda. Abaixo, ordenando por nome ascendente e sobrenome descendente:

Dim pop As New List(Of Popolacao)()
pop.OrderBy(Function(p) p.Nome).OrderByDescending(Function(p) p.SobreNome)

DAMASCENO.CESAR 09/06/2015 08:49:22
#447530
nao funcionou, continua mantendo a ordem anterior, sem alterar nem a ordem do nome ou do sobrenome
KERPLUNK 09/06/2015 13:48:21
#447552
Você precisa de uma nova variável para receber o resultado...
[c]
Dim pop As New List(Of Popolacao)()
[ô]procedimento de preenchimento de [Ô]pop[Ô]
Dim pop2 As New List(Of Popolacao)() = pop.OrderBy(Function(p) p.Nome).OrderByDescending(Function(p) p.SobreNome)
DAMASCENO.CESAR 10/06/2015 11:06:45
#447587
mesmo assim deu erro:
Unable to cast object of type [ô]System.Linq.OrderedEnumerable'2[SIPEN.Populacao,System.String][ô] to type [ô]System.Collections.Generic.List'1[SIPEN.Populacao][ô].

KERPLUNK 10/06/2015 21:01:10
#447602
Ao final adicione ToList()

Dim pop As New List(Of Popolacao)()
[ô]procedimento de preenchimento de [Ô]pop[Ô]
Dim pop2 As New List(Of Popolacao)() = pop.OrderBy(Function(p) p.Nome).OrderByDescending(Function(p) p.SobreNome).ToList()
DAMASCENO.CESAR 11/06/2015 11:48:10
#447620
Obrigado KERPLUNK, agora rodou lindo!!
Até mais
Tópico encerrado , respostas não são mais permitidas