SORT GENERICO

MAXCIM 21/06/2016 17:09:31
#463866
Olá amigos,

o código a seguir faz um sort genérico, porem não esta funcionando.

a linha Dim [property] As PropertyInfo = list.[GetType]().GetGenericArguments()(0).[GetType]().GetProperty(sortBy) retorna nothing.
alguém poderia ver oque há de errado com ela?


Public Function Sort(list As List(Of Employee), sortBy As [String], sortDirection As [String]) As List(Of Employee)
Dim [property] As PropertyInfo = list.[GetType]().GetGenericArguments()(0).[GetType]().GetProperty(sortBy)

If sortDirection = [Ô]ASC[Ô] Then
Return list.OrderBy(Function(e) [property].GetValue(e, Nothing))
End If
If sortDirection = [Ô]DESC[Ô] Then
Return list.OrderByDescending(Function(e) [property].GetValue(e, Nothing))
Else
Throw New ArgumentOutOfRangeException()
End If
End Function


desde já agradeço
KERPLUNK 21/06/2016 18:13:35
#463869
Resposta escolhida
Nossa, eu acho isso tudo muito mais trabalhoso que simplesmente usar o método [Ô]OrderBy[Ô] e OrderByAscending[Ô]... Não entendi o que você pretende fazer com isso...
MAXCIM 21/06/2016 18:29:43
#463871
Oi Kerplunk, é trabalhoso.. mas é pra poupar trabalho.
preenchendo o datagridview com List , não tem a opção de ordenar as colunas de modo nativo.

com o sort genérico, posso passar pro DADOS.DATASOUCE o list ordenado pelo nome da coluna clicada no grid,
assim clicando uma vez ordena ASC, clicando novamente ordenas DESC,

eu programei com o SELECT CASE o nome de todos os campos do grid,mas seria interessante um modo genérico para isso.

KERPLUNK 21/06/2016 19:04:44
#463872
Para isso, você deveria implementar um SortableBindingList<T>
Tópico encerrado , respostas não são mais permitidas