linq orderby.tolist() de la performance
J'ai une commande de requête d'une Liste et d'appeler à de nombreuses reprises.
list = list.OrderBy().ToList();
Dans ce code ToList() la méthode est de passer du haut de ressources et prend beaucoup de temps. Comment puis-je accélérer avec une autre méthode de classement sans le convertir en une liste. Dois-je utiliser .Sorte d'extension pour les tableaux?
List<T>
a son propre Sort()
méthode: msdn.microsoft.com/en-us/library/b0zbh7b6.aspxNotez que
OrderBy
est paresseusement évalué, en appelant ToList
forces que l'évaluation à arriver. Questions à poser: est-ce votre OrderBy
rien faire cher comme faire des appels de méthode? Quelle est votre source?En fait j'ai une classe qui a un début et dates de fin et de cette liste est la commande pour les heures de départ. Je suis de l'ajout et de suppression de ces objets peut-être pour un million de fois (c'est une simulation). Comment puis-je le garder triés lors de l'ajout d'un objet? Je pense que l'insertion de la spesific index est nécessaire, j'ai donc besoin de filtre sur chaque ajout. Peut-être que cela a besoin de plus de ressources, je ne suis pas sûr...
Peut-être au contraire, vous voulez quelque chose comme
SortedList<TKey, TValue>
ou SortedSet
?OriginalL'auteur Baran | 2011-02-14
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, essayez de trier la liste une fois, et de garder un tri.
Pour accélérer les choses que vous pouvez utiliser Parallel LINQ.
voir: http://msdn.microsoft.com/en-us/magazine/cc163329.aspx
Un OrderBy() Parallèle ressemble à ceci:
OriginalL'auteur CaptainPlanet
Vous suffit d'appeler le numéro ToList() une fois pour obtenir votre liste triée. Toutes les actions futures doivent utiliser sortedList.
OriginalL'auteur Aducci