PriorityOrder

PriorityOrder is an open source library that allows to order enumerable by priority.

MIT License

Stars
0
Committers
1

Description

PriorityOrder is an open source library that allows to order enumerable by priority.

Install

dotnet add package Kurnakov.PriorityOrder

Idea

using PriorityOrder;

public class Employee
{
    public string Name { get; set; }
    public string Role { get; set; }
}

var source = new List<Employee>
{
    new Employee() { Name = "Willow", Role = "Manager" },
    new Employee() { Name = "Huxley", Role = "Programmer" },
    new Employee() { Name = "Tom", Role = "Programmer" },
    new Employee() { Name = "Sutton", Role = "Tester" },
    new Employee() { Name = "Lev", Role = "HR"  },
    new Employee() { Name = "Max", Role = "Programmer" },
    new Employee() { Name = "Bob", Role = "Manager" },
    new Employee() { Name = "Jack", Role = "Tester" },
    new Employee() { Name = "Ruby", Role = "Manager" },
    new Employee() { Name = "Willow", Role = "Accountant"  },
};

// For example, you want to order employees by these specific priorities (not alphabetically).
var priorities = new List<string>()
{
    "Programmer",
    "Tester",
    "Manager",
    // After "Manager" order doesn't matter anymore.
};
List<Employee> result = source
    .OrderByPriority(x => x.Role, priorities)
    .ThenBy(x => x.Name) // Optional.
    .ToList();

// result:
// Role: 'Programmer', Name: 'Huxley'
// Role: 'Programmer', Name: 'Max'
// Role: 'Programmer', Name: 'Tom'
// Role: 'Tester', Name: 'Jack'
// Role: 'Tester', Name: 'Sutton'
// Role: 'Manager', Name: 'Bob'
// Role: 'Manager', Name: 'Ruby'
// Role: 'Manager', Name: 'Willow'
// Role: 'HR', Name: 'Lev'
// Role: 'Accountant', Name: 'Willow'

Besides strings you can use enum's, numbers etc (more details you can read on Wiki)

StackOverflow

Docs

You can look at the full docs on Wiki

Give a star ⭐

I hope this library is useful for you, if so please give a star for this repository, thank you :)

Badges
Extracted from project README
NuGet NuGet download Build/Test MIT License
Related Projects