Estou usando o C # no Framework 3.5. Estou procurando rapidamente classificar um genérico List<T>
. Para fins de exemplo, digamos que eu tenha uma lista de um Person
tipo com uma propriedade de sobrenome. Como classificaria essa lista usando uma expressão lambda?
List<Person> people = PopulateList();
people.OrderBy(???? => ?????)
Você precisa que a lista seja classificada no local ou apenas uma sequência ordenada do conteúdo da lista? O último é mais fácil:
Para classificar no local, você precisa de um
IComparer<Person>
ou umComparison<Person>
. Para isso, você pode considerarProjectionComparer
no MiscUtil .(Eu sei que continuo trazendo o MiscUtil - ele continua sendo relevante ...)
fonte
List<T>
, mas não precisa se apenas deseja iterar.você pode usar linq :) usando:
fonte
fonte
OrderBy
não modificar lista, mas retorna uma nova "coleção" (geralmente lentaIEnumerable<T>
) que precisa ser atribuída a algo.fonte
para mim, este útil guia fictício - Classificação na lista genérica - funcionou. ajuda você a entender quatro maneiras (sobrecargas) de realizar esse trabalho com explicações muito completas e claras e exemplos simples
fonte
Você pode usar este trecho de código:
onde
New1
é umaList<Employee>
.EmpList
é variável de aList<Employee>
.z
é uma variável doEmployee
tipofonte
var
tipo.New1
éList<Employee>
ez
éEmployee
.Você também pode usar
fonte
Este é um classificador genérico. Chamado com o interruptor abaixo.
dvm.PagePermissions é uma propriedade no meu ViewModel do tipo Lista T, neste caso, T é uma classe de modelo EF6 chamada page_permission.
dvm.UserNameSortDir é uma propriedade de string no viewmodel que mantém a próxima direção de classificação. O que é totalmente usado na exibição.
fonte