Quelqu'un peut-il expliquer quoi de la différence entre :
et
Qui est la bonne approche, si je désire commander par 3 éléments de données ?
Quelqu'un peut-il expliquer quoi de la différence entre :
et
Qui est la bonne approche, si je désire commander par 3 éléments de données ?
Vous devriez certainement utiliser ThenBy
plutôt que de multiples OrderBy
des appels. (Je suppose que l'un des fragments de code dans votre question a été conçue pour utiliser ThenBy
. Au moment d'écrire ces lignes, les deux extraits sont identiques.)
Je dirais ceci:
tmp = invoices.InvoiceCollection
.OrderBy(o => o.InvoiceOwner.LastName)
.ThenBy(o => o.InvoiceOwner.FirstName)
.ThenBy(o => o.InvoiceID);
Notez comment vous pouvez utiliser le même nom à chaque fois. C'est aussi l'équivalent de:
tmp = from o in invoices.InvoiceCollection
orderby o.InvoiceOwner.LastName,
o.InvoiceOwner.FirstName,
o.InvoiceID
select o;
Si vous appelez OrderBy
plusieurs fois, il sera en fait réorganiser la séquence complètement trois fois... de sorte que le dernier appel sera effectivement le dominant. Vous pouvez (dans LINQ to Objects) écrire
foo.OrderBy(x).OrderBy(y).OrderBy(z)
ce qui équivaut à un
foo.OrderBy(z).ThenBy(y).ThenBy(x)
que l'ordre de tri est stable, mais vous avez absolument ne fallait pas:
OrderBy
a été conçue pour être utilisée.Le point de OrderBy
est de fournir le "plus important" de la commande de projection; ensuite, utilisez ThenBy
(à plusieurs reprises) pour spécifier secondaire, tertiaire, etc la commande de projections.
Effectivement, pensez-y de cette façon: OrderBy(...).ThenBy(...).ThenBy(...)
vous permet de construire un seul et unique composite comparaison de deux objets, puis trier l'ordre d'une fois à l'aide de composites à la comparaison. C'est certainement ce que vous souhaitez.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.