C# Sort and OrderBy comparison

No, they aren’t the same algorithm. For starters, the LINQ OrderBy is documented as stable (i.e. if two items have the same Name, they’ll appear in their original order).

It also depends on whether you buffer the query vs iterate it several times (LINQ-to-Objects, unless you buffer the result, will re-order per foreach).

For the OrderBy query, I would also be tempted to use:

OrderBy(n => n.Name, StringComparer.{yourchoice}IgnoreCase);

(for {yourchoice} one of CurrentCulture, Ordinal or InvariantCulture).

List<T>.Sort

This method uses Array.Sort, which
uses the QuickSort algorithm. This
implementation performs an unstable
sort; that is, if two elements are
equal, their order might not be
preserved. In contrast, a stable sort
preserves the order of elements that
are equal.

Enumerable.OrderBy

This method performs a stable sort; that is, if the keys of two elements are equal, the order of the elements is preserved. In contrast, an unstable sort does not preserve the order of elements that have the same key.
sort; that is, if two elements are
equal, their order might not be
preserved. In contrast, a stable sort
preserves the order of elements that
are equal.

Leave a Comment