Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What Sorting Algorithm Is Used By LINQ "OrderBy"?

Evidently LINQ's "OrderBy" had originally been specified as unstable, but by the time of Orca it was specified as stable. Not all documentation has been updated accordingly - consider these links:

  • Jon Skeet on OrderBy stability
  • Troy Magennis on OrderBy stability

But if LINQ's OrderBy is now "stable," then it means it is not using a quicksort (which is inherently unstable) even though some documentation (e.g. Troy's book) says it is. So my question is: if not quicksort, then what is the actual algorithm LINQ's orderBy is using?

like image 977
Brent Arias Avatar asked May 07 '10 22:05

Brent Arias


People also ask

How does OrderBy work in LINQ?

Sorting Operators: OrderBy & OrderByDescending. A sorting operator arranges the elements of the collection in ascending or descending order. LINQ includes following sorting operators. Sorts the elements in the collection based on specified fields in ascending or decending order.

Is LINQ OrderBy ascending?

In LINQ, the OrderBy operator is used to sort the list/ collection values in ascending order. In LINQ, if we use order by the operator by default, it will sort the list of values in ascending order. We don't need to add any ascending condition in the query statement.

How does OrderBy work in C#?

In a query expression, the orderby clause causes the returned sequence or subsequence (group) to be sorted in either ascending or descending order. Multiple keys can be specified in order to perform one or more secondary sort operations. The sorting is performed by the default comparer for the type of the element.

How do I sort in LINQ descending order?

LINQ OrderBy Desc operator sorting the elements in descending order, it returns the collection in descending order. The values in the sequence of element returns the result in descending order based on the specific field. It is not valid in query syntax it is available only in the method syntax.


Video Answer


1 Answers

For LINQ to Objects, it's a stable quicksort that is used. For any other kind of LINQ, it's left to the underlying implementation.

like image 141
Jb Evain Avatar answered Oct 19 '22 22:10

Jb Evain