Tell me if there is a way to sort the list by the rules.
I have several playing decks and each has its own rules:
- Count - how many cards to take from the deck
- From / Before - in which interval the cards should be (If 0, then in any)
- Row - how many cards can fall out in a row
My current code:
private void ShuffleDecks()
    {
        List<TestCard> testCards = new();
        
        TestDesk desk1 = new TestDesk
        {
            From = 0,
            Before = 0,
            Row = 2,
            Count = 3
        };
        desk1.Cards = new List<TestCard>
        {
            new("a1", desk1),
            new("a2", desk1),
            new("a3", desk1),
        };
        TestDesk desk2 = new TestDesk
        {
            From = 1,
            Before = 4,
            Row = 1,
            Count = 2
        };
        desk2.Cards = new List<TestCard>
        {
            new("b1", desk2),
            new("b2", desk2),
            new("b3", desk2),
        };
        TestDesk desk3 = new TestDesk
        {
            From = 3,
            Before = 5,
            Row = 0,
            Count = 2
        };
        desk3.Cards = new List<TestCard>
        {
            new("c1", desk3),
            new("c2", desk3),
            new("c3", desk3),
        };
        List<TestDesk> desks = new List<TestDesk> { desk1, desk2, desk3 };
        foreach (TestDesk desk in desks)
        {
            desk.Cards.Shuffle();
            testCards.AddRange(desk.Cards.Take(desk.Count).ToList());
        }
        
        testCards.Sort();
        
        Debug.LogWarning($"{string.Join(", ", testCards.Select(x => x.Name))}");
    }
TestDesk and TestCard:
public class TestDesk
{
    public List<TestCard> Cards;
    public int From;
    public int Before;
    public int Row;
    public int Count;
}
public class TestCard
{
    public string Name;
    public TestDesk Desk;
    public TestCard(string name, TestDesk desk)
    {
        Name = name;
        Desk = desk;
    }
}
