< Summary

Information
Class: Fluorite.Extensions.SortExpressionQuerableExtensions
Assembly: Fluorite.Strainer
File(s): /builds/fluorite/strainer/src/Strainer/Extensions/SortExpressionQuerableExtensions.cs
Line coverage
100%
Covered lines: 10
Uncovered lines: 0
Coverable lines: 10
Total lines: 60
Line coverage: 100%
Branch coverage
100%
Covered branches: 6
Total branches: 6
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
OrderWithSortExpression(...)100%66100%

File(s)

/builds/fluorite/strainer/src/Strainer/Extensions/SortExpressionQuerableExtensions.cs

#LineLine coverage
 1using Fluorite.Strainer.Models.Sorting;
 2
 3namespace Fluorite.Extensions;
 4
 5public static class SortExpressionQuerableExtensions
 6{
 7    /// <summary>
 8    /// Sorts the elements of a sequence in an order according to
 9    /// <see cref="ISortExpression{TEntity}"/>.
 10    /// </summary>
 11    /// <typeparam name="TEntity">
 12    /// The type of entity stored in a sequence.
 13    /// </typeparam>
 14    /// <param name="source">
 15    /// The source sequence of elements.
 16    /// </param>
 17    /// <param name="sortExpression">
 18    /// The sort expression providing information about sorting order and key.
 19    /// </param>
 20    /// <returns>
 21    /// An instance of ordered queryable sequence.
 22    /// </returns>
 23    /// <exception cref="ArgumentNullException">
 24    /// <paramref name="sortExpression"/> is <see langword="null"/>.
 25    /// </exception>
 26    /// <exception cref="ArgumentNullException">
 27    /// <paramref name="source"/> is <see langword="null"/>.
 28    /// </exception>
 29    public static IOrderedQueryable<TEntity> OrderWithSortExpression<TEntity>(
 30        this IQueryable<TEntity> source,
 31        ISortExpression<TEntity> sortExpression)
 32    {
 933        Guard.Against.Null(source);
 834        Guard.Against.Null(sortExpression);
 35
 736        if (sortExpression.IsSubsequent)
 37        {
 238            var orderedSource = source as IOrderedQueryable<TEntity>;
 239            if (sortExpression.IsDescending)
 40            {
 141                return orderedSource.ThenByDescending(sortExpression.Expression);
 42            }
 43            else
 44            {
 145                return orderedSource.ThenBy(sortExpression.Expression);
 46            }
 47        }
 48        else
 49        {
 550            if (sortExpression.IsDescending)
 51            {
 452                return source.OrderByDescending(sortExpression.Expression);
 53            }
 54            else
 55            {
 156                return source.OrderBy(sortExpression.Expression);
 57            }
 58        }
 59    }
 60}