/// <summary>
        /// Looks for the first item or returns null if no items.
        /// </summary>
        /// <typeparam name="TEntity">Type of items.</typeparam>
        /// <param name="query">Query for items.</param>
        /// <param name="cancellation">Cancellation.</param>
        /// <returns>Item.</returns>
        public static async Task <TEntity> FirstOrDefaultAsync <TEntity>(
            this IODataQueryable <TEntity> query,
            CancellationToken cancellation = default)
        {
            var results = await query.Context.Provider.RetrieveItemsAsync(query.Take(1), cancellation);

            return(results.Items.FirstOrDefault());
        }