J'utilise C # sur Framework 3.5. Je cherche à trier rapidement un générique List<T>
. Pour cet exemple, disons que j'ai une liste d'un Person
type avec une propriété de nom. Comment trier cette liste à l'aide d'une expression lambda?
List<Person> people = PopulateList();
people.OrderBy(???? => ?????)
Avez-vous besoin que la liste soit triée sur place ou simplement une séquence ordonnée du contenu de la liste? Ce dernier est plus simple:
Pour trier sur place, vous auriez besoin d'un
IComparer<Person>
ou d'unComparison<Person>
. Pour cela, vous voudrez peut-être considérerProjectionComparer
dans MiscUtil .(Je sais que je continue à apporter MiscUtil - ça continue d'être pertinent ...)
la source
List<T>
, mais vous n'en avez pas besoin si vous voulez simplement répéter.vous pouvez utiliser linq :) en utilisant:
la source
la source
OrderBy
ne modifient pas la liste, mais renvoient plutôt une nouvelle "collection" (généralement paresseuseIEnumerable<T>
) qui doit être affectée à quelque chose.la source
pour moi, ce guide factice utile - Tri dans la liste générique - a fonctionné. il vous aide à comprendre 4 façons (surcharges) de faire ce travail avec des explications très complètes et claires et des exemples simples
la source
Vous pouvez utiliser cet extrait de code:
où
New1
est aList<Employee>
.EmpList
est variable de aList<Employee>
.z
est une variable deEmployee
type.la source
var
type.New1
estList<Employee>
etz
estEmployee
.Vous pouvez aussi utiliser
la source
Il s'agit d'un trieur générique. Appelé avec l'interrupteur ci-dessous.
dvm.PagePermissions est une propriété sur mon ViewModel de type List T dans ce cas T est une classe de modèle EF6 appelée page_permission.
dvm.UserNameSortDir est une propriété de chaîne sur le modèle de vue qui contient la direction de tri suivante. Celui qui est effectivement utilisé dans la vue.
la source