Popularity
2.2
Growing
Activity
4.3
-
63
6
6

Programming language: C#
License: MIT License
Tags: Misc    
Latest version: v3.0.0

NaturalSort.Extension alternatives and similar packages

Based on the "Misc" category.
Alternatively, view NaturalSort.Extension alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of NaturalSort.Extension or a related project?

Add another 'Misc' Package

README

NaturalSort.Extension logo NaturalSort.Extension

Extension method for StringComparison or any IComparer<string> that adds support for natural sorting (e.g. "abc1", "abc2", "abc10" instead of "abc1", "abc10", "abc2").

Build status Tests NuGet version NuGet downloads

The library is written in C# and released with an MIT license, so feel free to fork or use commercially.

Any feedback is appreciated, please visit the issues page or send me an e-mail.

Download

Binaries of the last build can be downloaded on the AppVeyor CI page of the project.

The library is also published on NuGet.org (prerelease), install using:

PM> Install-Package NaturalSort.Extension

NaturalSort.Extension is built for .NET v4.0 and .NET Standard 1.3.

Usage

The recommended method for best results is to create the comparer by using the StringComparison enum.

var sequence = new[] { "img12.png", "img10.png", "img2.png", "img1.png" };
var ordered = sequence.OrderBy(x => x, StringComparison.OrdinalIgnoreCase.WithNaturalSort());
// ordered will be "img1.png", "img2.png", "img10.png", "img12.png"

For more information about natural sort order, see: Sorting for Humans: Natural Sort Order (Coding Horror).

The NaturalSortComparer created using the extension method is a IComparer<string>, which you can use in all the places that accept IComparer<string> (e.g. OrderBy, Array.Sort, ...)

If you wish, you can be more explicit by not using the .WithNaturalSort() extension method, and using the constructor directly:

new NaturalSortComparer(StringComparison.OrdinalIgnoreCase)

Note that if you are using a custom IComparer<string> (or StringComparer), you can also use that instead of the StringComparison enum. However, if you use StringComparison, it should perform better as it avoids constructing substrings.


*Note that all licence references and agreements mentioned in the NaturalSort.Extension README section above are relevant to that project's source code only.