Sorting

Note: Be sure to install the HotChocolate.Types.SortingNuGet package.

Next we will add sorting to the users query, so we can sort on fields provided in the entity.

This is simply done by adding .UseSorting() on the field we want to sort, like seen below. You can chain sorting and filtering.

./GraphQL/QueryType.cs
using HotChocolate.Types;

namespace SlackClone.GraphQL
{
    public class QueryType : ObjectType<Query>
    {
        protected override void Configure(IObjectTypeDescriptor<Query> descriptor)
        {
            descriptor.Field(t => t.GetUsers())
                .UseFiltering()
                .UseSorting();
            descriptor.Field(t => t.GetUserStatuses());
        }
    }
}

Now we can run the server again and test what we have added. Reading the schema documentation you can see the sorting capabilities added to users query.

Lets test the sorting with the following query in the playground.

{
  users(order_by: { email: ASC }) {
    id
    firstName
    lastName
    fullName
    email
    username
  }
}

If everything went well you should see the following response.

{
  "data": {
    "users": [
      {
        "id": "eabf53a0-3101-4599-90fa-9db68620af81",
        "firstName": "Barack",
        "lastName": "Obama",
        "fullName": "Barack Obama",
        "email": "bobama@us.gov",
        "username": "bobama"
      },
      {
        "id": "1964199a-e8be-440a-a178-8998d114fd12",
        "firstName": "Donald",
        "lastName": "Trump",
        "fullName": "Donald Trump",
        "email": "dtrump@us.gov",
        "username": "dtrump"
      },
      {
        "id": "f58e8993-430d-4fd7-8281-4fab3fc3a086",
        "firstName": "George",
        "lastName": "Bush",
        "fullName": "George Bush",
        "email": "gbush@us.gov",
        "username": "gbush"
      }
    ]
  }
}

Last updated