< Summary

Line coverage
100%
Covered lines: 174
Uncovered lines: 0
Coverable lines: 174
Total lines: 1269
Line coverage: 100%
Branch coverage
100%
Covered branches: 84
Total branches: 84
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
File 1: IgnoreQueryFilters(...)100%11100%
File 1: IgnoreQueryFilters(...)100%22100%
File 1: IgnoreQueryFilters(...)100%11100%
File 1: IgnoreQueryFilters(...)100%22100%
File 1: AsSplitQuery(...)100%11100%
File 1: AsSplitQuery(...)100%22100%
File 1: AsSplitQuery(...)100%11100%
File 1: AsSplitQuery(...)100%22100%
File 1: AsNoTracking(...)100%11100%
File 1: AsNoTracking(...)100%22100%
File 1: AsNoTracking(...)100%11100%
File 1: AsNoTracking(...)100%22100%
File 1: AsNoTrackingWithIdentityResolution(...)100%11100%
File 1: AsNoTrackingWithIdentityResolution(...)100%22100%
File 1: AsNoTrackingWithIdentityResolution(...)100%11100%
File 1: AsNoTrackingWithIdentityResolution(...)100%22100%
File 1: AsTracking(...)100%11100%
File 1: AsTracking(...)100%22100%
File 1: AsTracking(...)100%11100%
File 1: AsTracking(...)100%22100%
File 2: Include(...)100%11100%
File 2: Include(...)100%22100%
File 2: Include(...)100%11100%
File 2: Include(...)100%22100%
File 2: Include(...)100%11100%
File 2: Include(...)100%22100%
File 2: Include(...)100%11100%
File 2: Include(...)100%22100%
File 2: ThenInclude(...)100%11100%
File 2: ThenInclude(...)100%44100%
File 2: ThenInclude(...)100%11100%
File 2: ThenInclude(...)100%44100%
File 2: ThenInclude(...)100%11100%
File 2: ThenInclude(...)100%44100%
File 2: ThenInclude(...)100%11100%
File 2: ThenInclude(...)100%44100%
File 3: Like(...)100%11100%
File 3: Like(...)100%22100%
File 3: Like(...)100%11100%
File 3: Like(...)100%22100%
File 4: OrderBy(...)100%11100%
File 4: OrderBy(...)100%22100%
File 4: OrderBy(...)100%11100%
File 4: OrderBy(...)100%22100%
File 4: OrderByDescending(...)100%11100%
File 4: OrderByDescending(...)100%22100%
File 4: OrderByDescending(...)100%11100%
File 4: OrderByDescending(...)100%22100%
File 4: ThenBy(...)100%11100%
File 4: ThenBy(...)100%44100%
File 4: ThenBy(...)100%11100%
File 4: ThenBy(...)100%44100%
File 4: ThenByDescending(...)100%11100%
File 4: ThenByDescending(...)100%44100%
File 4: ThenByDescending(...)100%11100%
File 4: ThenByDescending(...)100%44100%
File 5: Take(...)100%11100%
File 5: Take(...)100%22100%
File 5: Take(...)100%11100%
File 5: Take(...)100%22100%
File 5: Skip(...)100%11100%
File 5: Skip(...)100%22100%
File 5: Skip(...)100%11100%
File 5: Skip(...)100%22100%
File 6: Select(...)100%11100%
File 6: SelectMany(...)100%11100%
File 7: Where(...)100%11100%
File 7: Where(...)100%22100%
File 7: Where(...)100%11100%
File 7: Where(...)100%22100%

File(s)

/home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Builders/Builder_Flags.cs

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3/// <summary>
 4/// Extension methods for building specifications.
 5/// </summary>
 6public static partial class SpecificationBuilderExtensions
 7{
 8    /// <summary>
 9    /// Configures the specification to ignore query filters.
 10    /// </summary>
 11    /// <typeparam name="T">The type of the entity.</typeparam>
 12    /// <typeparam name="TResult">The type of the result.</typeparam>
 13    /// <param name="builder">The specification builder.</param>
 14    /// <returns>The updated specification builder.</returns>
 15    public static ISpecificationBuilder<T, TResult> IgnoreQueryFilters<T, TResult>(
 16        this ISpecificationBuilder<T, TResult> builder) where T : class
 517        => IgnoreQueryFilters(builder, true);
 18
 19    /// <summary>
 20    /// Configures the specification to ignore query filters if the condition is true.
 21    /// </summary>
 22    /// <typeparam name="T">The type of the entity.</typeparam>
 23    /// <typeparam name="TResult">The type of the result.</typeparam>
 24    /// <param name="builder">The specification builder.</param>
 25    /// <param name="condition">The condition to evaluate.</param>
 26    /// <returns>The updated specification builder.</returns>
 27    public static ISpecificationBuilder<T, TResult> IgnoreQueryFilters<T, TResult>(
 28        this ISpecificationBuilder<T, TResult> builder,
 29        bool condition) where T : class
 30    {
 631        if (condition)
 32        {
 533            builder.Specification.AddOrUpdateFlag(SpecFlags.IgnoreQueryFilters, true);
 34        }
 635        return builder;
 36    }
 37
 38    /// <summary>
 39    /// Configures the specification to ignore query filters.
 40    /// </summary>
 41    /// <typeparam name="T">The type of the entity.</typeparam>
 42    /// <param name="builder">The specification builder.</param>
 43    /// <returns>The updated specification builder.</returns>
 44    public static ISpecificationBuilder<T> IgnoreQueryFilters<T>(
 45        this ISpecificationBuilder<T> builder) where T : class
 846        => IgnoreQueryFilters(builder, true);
 47
 48    /// <summary>
 49    /// Configures the specification to ignore query filters if the condition is true.
 50    /// </summary>
 51    /// <typeparam name="T">The type of the entity.</typeparam>
 52    /// <param name="builder">The specification builder.</param>
 53    /// <param name="condition">The condition to evaluate.</param>
 54    /// <returns>The updated specification builder.</returns>
 55    public static ISpecificationBuilder<T> IgnoreQueryFilters<T>(
 56        this ISpecificationBuilder<T> builder,
 57        bool condition) where T : class
 58    {
 959        if (condition)
 60        {
 861            builder.Specification.AddOrUpdateFlag(SpecFlags.IgnoreQueryFilters, true);
 62        }
 963        return builder;
 64    }
 65
 66    /// <summary>
 67    /// Configures the specification to use split queries.
 68    /// </summary>
 69    /// <typeparam name="T">The type of the entity.</typeparam>
 70    /// <typeparam name="TResult">The type of the result.</typeparam>
 71    /// <param name="builder">The specification builder.</param>
 72    /// <returns>The updated specification builder.</returns>
 73    public static ISpecificationBuilder<T, TResult> AsSplitQuery<T, TResult>(
 74        this ISpecificationBuilder<T, TResult> builder) where T : class
 175        => AsSplitQuery(builder, true);
 76
 77    /// <summary>
 78    /// Configures the specification to use split queries if the condition is true.
 79    /// </summary>
 80    /// <typeparam name="T">The type of the entity.</typeparam>
 81    /// <typeparam name="TResult">The type of the result.</typeparam>
 82    /// <param name="builder">The specification builder.</param>
 83    /// <param name="condition">The condition to evaluate.</param>
 84    /// <returns>The updated specification builder.</returns>
 85    public static ISpecificationBuilder<T, TResult> AsSplitQuery<T, TResult>(
 86        this ISpecificationBuilder<T, TResult> builder,
 87        bool condition) where T : class
 88    {
 289        if (condition)
 90        {
 191            builder.Specification.AddOrUpdateFlag(SpecFlags.AsSplitQuery, true);
 92        }
 293        return builder;
 94    }
 95
 96    /// <summary>
 97    /// Configures the specification to use split queries.
 98    /// </summary>
 99    /// <typeparam name="T">The type of the entity.</typeparam>
 100    /// <param name="builder">The specification builder.</param>
 101    /// <returns>The updated specification builder.</returns>
 102    public static ISpecificationBuilder<T> AsSplitQuery<T>(
 103        this ISpecificationBuilder<T> builder) where T : class
 7104        => AsSplitQuery(builder, true);
 105
 106    /// <summary>
 107    /// Configures the specification to use split queries if the condition is true.
 108    /// </summary>
 109    /// <typeparam name="T">The type of the entity.</typeparam>
 110    /// <param name="builder">The specification builder.</param>
 111    /// <param name="condition">The condition to evaluate.</param>
 112    /// <returns>The updated specification builder.</returns>
 113    public static ISpecificationBuilder<T> AsSplitQuery<T>(
 114        this ISpecificationBuilder<T> builder,
 115        bool condition) where T : class
 116    {
 8117        if (condition)
 118        {
 7119            builder.Specification.AddOrUpdateFlag(SpecFlags.AsSplitQuery, true);
 120        }
 8121        return builder;
 122    }
 123
 124    /// <summary>
 125    /// Configures the specification to apply NoTracking behavior.
 126    /// It will also disable AsNoTrackingWithIdentityResolution and AsTracking flags.
 127    /// </summary>
 128    /// <typeparam name="T">The type of the entity.</typeparam>
 129    /// <typeparam name="TResult">The type of the result.</typeparam>
 130    /// <param name="builder">The specification builder.</param>
 131    /// <returns>The updated specification builder.</returns>
 132    public static ISpecificationBuilder<T, TResult> AsNoTracking<T, TResult>(
 133        this ISpecificationBuilder<T, TResult> builder) where T : class
 1134        => AsNoTracking(builder, true);
 135
 136    /// <summary>
 137    /// Configures the specification to apply NoTracking behavior if the condition is true.
 138    /// It will also disable AsNoTrackingWithIdentityResolution and AsTracking flags.
 139    /// </summary>
 140    /// <typeparam name="T">The type of the entity.</typeparam>
 141    /// <typeparam name="TResult">The type of the result.</typeparam>
 142    /// <param name="builder">The specification builder.</param>
 143    /// <param name="condition">The condition to evaluate.</param>
 144    /// <returns>The updated specification builder.</returns>
 145    public static ISpecificationBuilder<T, TResult> AsNoTracking<T, TResult>(
 146        this ISpecificationBuilder<T, TResult> builder,
 147        bool condition) where T : class
 148    {
 2149        if (condition)
 150        {
 1151            builder.Specification.AddOrUpdateFlag(SpecFlags.AsTracking, false);
 1152            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTrackingWithIdentityResolution, false);
 1153            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTracking, true);
 154        }
 2155        return builder;
 156    }
 157
 158    /// <summary>
 159    /// Configures the specification to apply NoTracking behavior.
 160    /// It will also disable AsNoTrackingWithIdentityResolution and AsTracking flags.
 161    /// </summary>
 162    /// <typeparam name="T">The type of the entity.</typeparam>
 163    /// <param name="builder">The specification builder.</param>
 164    /// <returns>The updated specification builder.</returns>
 165    public static ISpecificationBuilder<T> AsNoTracking<T>(
 166        this ISpecificationBuilder<T> builder) where T : class
 11167        => AsNoTracking(builder, true);
 168
 169    /// <summary>
 170    /// Configures the specification to apply NoTracking behavior if the condition is true.
 171    /// It will also disable AsNoTrackingWithIdentityResolution and AsTracking flags.
 172    /// </summary>
 173    /// <typeparam name="T">The type of the entity.</typeparam>
 174    /// <param name="builder">The specification builder.</param>
 175    /// <param name="condition">The condition to evaluate.</param>
 176    /// <returns>The updated specification builder.</returns>
 177    public static ISpecificationBuilder<T> AsNoTracking<T>(
 178        this ISpecificationBuilder<T> builder,
 179        bool condition) where T : class
 180    {
 12181        if (condition)
 182        {
 11183            builder.Specification.AddOrUpdateFlag(SpecFlags.AsTracking, false);
 11184            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTrackingWithIdentityResolution, false);
 11185            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTracking, true);
 186        }
 12187        return builder;
 188    }
 189
 190    /// <summary>
 191    /// Configures the specification to apply AsNoTrackingWithIdentityResolution behavior.
 192    /// It will also disable AsNoTracking and AsTracking flags.
 193    /// </summary>
 194    /// <typeparam name="T">The type of the entity.</typeparam>
 195    /// <typeparam name="TResult">The type of the result.</typeparam>
 196    /// <param name="builder">The specification builder.</param>
 197    /// <returns>The updated specification builder.</returns>
 198    public static ISpecificationBuilder<T, TResult> AsNoTrackingWithIdentityResolution<T, TResult>(
 199        this ISpecificationBuilder<T, TResult> builder) where T : class
 1200        => AsNoTrackingWithIdentityResolution(builder, true);
 201
 202    /// <summary>
 203    /// Configures the specification to apply AsNoTrackingWithIdentityResolution behavior if the condition is true.
 204    /// It will also disable AsNoTracking and AsTracking flags.
 205    /// </summary>
 206    /// <typeparam name="T">The type of the entity.</typeparam>
 207    /// <typeparam name="TResult">The type of the result.</typeparam>
 208    /// <param name="builder">The specification builder.</param>
 209    /// <param name="condition">The condition to evaluate.</param>
 210    /// <returns>The updated specification builder.</returns>
 211    public static ISpecificationBuilder<T, TResult> AsNoTrackingWithIdentityResolution<T, TResult>(
 212        this ISpecificationBuilder<T, TResult> builder,
 213        bool condition) where T : class
 214    {
 2215        if (condition)
 216        {
 1217            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTracking, false);
 1218            builder.Specification.AddOrUpdateFlag(SpecFlags.AsTracking, false);
 1219            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTrackingWithIdentityResolution, true);
 220        }
 2221        return builder;
 222    }
 223
 224    /// <summary>
 225    /// Configures the specification to apply AsNoTrackingWithIdentityResolution behavior.
 226    /// It will also disable AsNoTracking and AsTracking flags.
 227    /// </summary>
 228    /// <typeparam name="T">The type of the entity.</typeparam>
 229    /// <param name="builder">The specification builder.</param>
 230    /// <returns>The updated specification builder.</returns>
 231    public static ISpecificationBuilder<T> AsNoTrackingWithIdentityResolution<T>(
 232        this ISpecificationBuilder<T> builder) where T : class
 9233        => AsNoTrackingWithIdentityResolution(builder, true);
 234
 235    /// <summary>
 236    /// Configures the specification to apply AsNoTrackingWithIdentityResolution behavior if the condition is true.
 237    /// It will also disable AsNoTracking and AsTracking flags.
 238    /// </summary>
 239    /// <typeparam name="T">The type of the entity.</typeparam>
 240    /// <param name="builder">The specification builder.</param>
 241    /// <param name="condition">The condition to evaluate.</param>
 242    /// <returns>The updated specification builder.</returns>
 243    public static ISpecificationBuilder<T> AsNoTrackingWithIdentityResolution<T>(
 244        this ISpecificationBuilder<T> builder,
 245        bool condition) where T : class
 246    {
 10247        if (condition)
 248        {
 9249            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTracking, false);
 9250            builder.Specification.AddOrUpdateFlag(SpecFlags.AsTracking, false);
 9251            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTrackingWithIdentityResolution, true);
 252        }
 10253        return builder;
 254    }
 255
 256    /// <summary>
 257    /// Configures the specification to apply AsTracking behavior.
 258    /// It will also disable AsNoTrackingWithIdentityResolution and AsNoTracking flags.
 259    /// </summary>
 260    /// <typeparam name="T">The type of the entity.</typeparam>
 261    /// <typeparam name="TResult">The type of the result.</typeparam>
 262    /// <param name="builder">The specification builder.</param>
 263    /// <returns>The updated specification builder.</returns>
 264    public static ISpecificationBuilder<T, TResult> AsTracking<T, TResult>(
 265        this ISpecificationBuilder<T, TResult> builder) where T : class
 1266        => AsTracking(builder, true);
 267
 268    /// <summary>
 269    /// Configures the specification to apply AsTracking behavior if the condition is true.
 270    /// It will also disable AsNoTrackingWithIdentityResolution and AsNoTracking flags.
 271    /// </summary>
 272    /// <typeparam name="T">The type of the entity.</typeparam>
 273    /// <typeparam name="TResult">The type of the result.</typeparam>
 274    /// <param name="builder">The specification builder.</param>
 275    /// <param name="condition">The condition to evaluate.</param>
 276    /// <returns>The updated specification builder.</returns>
 277    public static ISpecificationBuilder<T, TResult> AsTracking<T, TResult>(
 278        this ISpecificationBuilder<T, TResult> builder,
 279        bool condition) where T : class
 280    {
 2281        if (condition)
 282        {
 1283            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTracking, false);
 1284            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTrackingWithIdentityResolution, false);
 1285            builder.Specification.AddOrUpdateFlag(SpecFlags.AsTracking, true);
 286        }
 2287        return builder;
 288    }
 289
 290    /// <summary>
 291    /// Configures the specification to apply AsTracking behavior.
 292    /// It will also disable AsNoTrackingWithIdentityResolution and AsNoTracking flags.
 293    /// </summary>
 294    /// <typeparam name="T">The type of the entity.</typeparam>
 295    /// <param name="builder">The specification builder.</param>
 296    /// <returns>The updated specification builder.</returns>
 297    public static ISpecificationBuilder<T> AsTracking<T>(
 298        this ISpecificationBuilder<T> builder) where T : class
 9299        => AsTracking(builder, true);
 300
 301    /// <summary>
 302    /// Configures the specification to apply AsTracking behavior if the condition is true.
 303    /// It will also disable AsNoTrackingWithIdentityResolution and AsNoTracking flags.
 304    /// </summary>
 305    /// <typeparam name="T">The type of the entity.</typeparam>
 306    /// <param name="builder">The specification builder.</param>
 307    /// <param name="condition">The condition to evaluate.</param>
 308    /// <returns>The updated specification builder.</returns>
 309    public static ISpecificationBuilder<T> AsTracking<T>(
 310        this ISpecificationBuilder<T> builder,
 311        bool condition) where T : class
 312    {
 10313        if (condition)
 314        {
 9315            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTracking, false);
 9316            builder.Specification.AddOrUpdateFlag(SpecFlags.AsNoTrackingWithIdentityResolution, false);
 9317            builder.Specification.AddOrUpdateFlag(SpecFlags.AsTracking, true);
 318        }
 10319        return builder;
 320    }
 321}

/home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Builders/Builder_Include.cs

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3public static partial class SpecificationBuilderExtensions
 4{
 5    /// <summary>
 6    /// Adds an Include clause to the specification.
 7    /// </summary>
 8    /// <typeparam name="T">The type of the entity.</typeparam>
 9    /// <typeparam name="TResult">The type of the result.</typeparam>
 10    /// <param name="builder">The specification builder.</param>
 11    /// <param name="includeString">The include string.</param>
 12    /// <returns>The updated specification builder.</returns>
 13    public static ISpecificationBuilder<T, TResult> Include<T, TResult>(
 14        this ISpecificationBuilder<T, TResult> builder,
 15        string includeString) where T : class
 716        => Include(builder, includeString, true);
 17
 18    /// <summary>
 19    /// Adds an Include clause to the specification if the condition is true.
 20    /// </summary>
 21    /// <typeparam name="T">The type of the entity.</typeparam>
 22    /// <typeparam name="TResult">The type of the result.</typeparam>
 23    /// <param name="builder">The specification builder.</param>
 24    /// <param name="includeString">The include string.</param>
 25    /// <param name="condition">The condition to evaluate.</param>
 26    /// <returns>The updated specification builder.</returns>
 27    public static ISpecificationBuilder<T, TResult> Include<T, TResult>(
 28        this ISpecificationBuilder<T, TResult> builder,
 29        string includeString,
 30        bool condition) where T : class
 31    {
 832        if (condition)
 33        {
 734            builder.Specification.AddInternal(ItemType.IncludeString, includeString);
 35        }
 836        return builder;
 37    }
 38
 39    /// <summary>
 40    /// Adds an Include clause to the specification.
 41    /// </summary>
 42    /// <typeparam name="T">The type of the entity.</typeparam>
 43    /// <param name="builder">The specification builder.</param>
 44    /// <param name="includeString">The include string.</param>
 45    /// <returns>The updated specification builder.</returns>
 46    public static ISpecificationBuilder<T> Include<T>(
 47        this ISpecificationBuilder<T> builder,
 48        string includeString) where T : class
 1249        => Include(builder, includeString, true);
 50
 51    /// <summary>
 52    /// Adds an Include clause to the specification if the condition is true.
 53    /// </summary>
 54    /// <typeparam name="T">The type of the entity.</typeparam>
 55    /// <param name="builder">The specification builder.</param>
 56    /// <param name="includeString">The include string.</param>
 57    /// <param name="condition">The condition to evaluate.</param>
 58    /// <returns>The updated specification builder.</returns>
 59    public static ISpecificationBuilder<T> Include<T>(
 60        this ISpecificationBuilder<T> builder,
 61        string includeString,
 62        bool condition) where T : class
 63    {
 1364        if (condition)
 65        {
 1266            builder.Specification.AddInternal(ItemType.IncludeString, includeString);
 67        }
 1368        return builder;
 69    }
 70
 71    /// <summary>
 72    /// Adds an Include clause to the specification.
 73    /// </summary>
 74    /// <typeparam name="T">The type of the entity.</typeparam>
 75    /// <typeparam name="TResult">The type of the result.</typeparam>
 76    /// <typeparam name="TProperty">The type of the property.</typeparam>
 77    /// <param name="builder">The specification builder.</param>
 78    /// <param name="navigationSelector">The include expression.</param>
 79    /// <returns>The updated includable specification builder.</returns>
 80    public static IIncludableSpecificationBuilder<T, TResult, TProperty> Include<T, TResult, TProperty>(
 81        this ISpecificationBuilder<T, TResult> builder,
 82        Expression<Func<T, TProperty>> navigationSelector) where T : class
 2483        => Include(builder, navigationSelector, true);
 84
 85    /// <summary>
 86    /// Adds an Include clause to the specification if the condition is true.
 87    /// </summary>
 88    /// <typeparam name="T">The type of the entity.</typeparam>
 89    /// <typeparam name="TResult">The type of the result.</typeparam>
 90    /// <typeparam name="TProperty">The type of the property.</typeparam>
 91    /// <param name="builder">The specification builder.</param>
 92    /// <param name="navigationSelector">The include expression.</param>
 93    /// <param name="condition">The condition to evaluate.</param>
 94    /// <returns>The updated includable specification builder.</returns>
 95    public static IIncludableSpecificationBuilder<T, TResult, TProperty> Include<T, TResult, TProperty>(
 96        this ISpecificationBuilder<T, TResult> builder,
 97        Expression<Func<T, TProperty>> navigationSelector,
 98        bool condition) where T : class
 99    {
 29100        if (condition)
 101        {
 24102            builder.Specification.AddInternal(ItemType.Include, navigationSelector, (int)IncludeType.Include);
 103        }
 104
 29105        Specification<T, TResult>.IsChainDiscarded = !condition;
 29106        var includeBuilder = new IncludableSpecificationBuilder<T, TResult, TProperty>(builder.Specification);
 29107        return includeBuilder;
 108    }
 109
 110    /// <summary>
 111    /// Adds an Include clause to the specification.
 112    /// </summary>
 113    /// <typeparam name="T">The type of the entity.</typeparam>
 114    /// <typeparam name="TProperty">The type of the property.</typeparam>
 115    /// <param name="builder">The specification builder.</param>
 116    /// <param name="navigationSelector">The include expression.</param>
 117    /// <returns>The updated includable specification builder.</returns>
 118    public static IIncludableSpecificationBuilder<T, TProperty> Include<T, TProperty>(
 119        this ISpecificationBuilder<T> builder,
 120        Expression<Func<T, TProperty>> navigationSelector) where T : class
 37121        => Include(builder, navigationSelector, true);
 122
 123    /// <summary>
 124    /// Adds an Include clause to the specification if the condition is true.
 125    /// </summary>
 126    /// <typeparam name="T">The type of the entity.</typeparam>
 127    /// <typeparam name="TProperty">The type of the property.</typeparam>
 128    /// <param name="builder">The specification builder.</param>
 129    /// <param name="navigationSelector">The include expression.</param>
 130    /// <param name="condition">The condition to evaluate.</param>
 131    /// <returns>The updated includable specification builder.</returns>
 132    public static IIncludableSpecificationBuilder<T, TProperty> Include<T, TProperty>(
 133        this ISpecificationBuilder<T> builder,
 134        Expression<Func<T, TProperty>> navigationSelector,
 135        bool condition) where T : class
 136    {
 42137        if (condition)
 138        {
 37139            builder.Specification.AddInternal(ItemType.Include, navigationSelector, (int)IncludeType.Include);
 140        }
 141
 42142        Specification<T>.IsChainDiscarded = !condition;
 42143        var includeBuilder = new IncludableSpecificationBuilder<T, TProperty>(builder.Specification);
 42144        return includeBuilder;
 145    }
 146
 147    /// <summary>
 148    /// Adds a ThenInclude clause to the specification.
 149    /// </summary>
 150    /// <typeparam name="TEntity">The type of the entity.</typeparam>
 151    /// <typeparam name="TResult">The type of the result.</typeparam>
 152    /// <typeparam name="TPreviousProperty">The type of the previous property.</typeparam>
 153    /// <typeparam name="TProperty">The type of the property.</typeparam>
 154    /// <param name="builder">The previous includable specification builder.</param>
 155    /// <param name="navigationSelector">The include expression.</param>
 156    /// <returns>The updated includable specification builder.</returns>
 157    public static IIncludableSpecificationBuilder<TEntity, TResult, TProperty> ThenInclude<TEntity, TResult, TPreviousPr
 158        this IIncludableSpecificationBuilder<TEntity, TResult, TPreviousProperty> builder,
 159        Expression<Func<TPreviousProperty, TProperty>> navigationSelector)
 160        where TEntity : class
 15161        => ThenInclude(builder, navigationSelector, true);
 162
 163    /// <summary>
 164    /// Adds a ThenInclude clause to the specification if the condition is true.
 165    /// </summary>
 166    /// <typeparam name="TEntity">The type of the entity.</typeparam>
 167    /// <typeparam name="TResult">The type of the result.</typeparam>
 168    /// <typeparam name="TPreviousProperty">The type of the previous property.</typeparam>
 169    /// <typeparam name="TProperty">The type of the property.</typeparam>
 170    /// <param name="builder">The previous includable specification builder.</param>
 171    /// <param name="navigationSelector">The include expression.</param>
 172    /// <param name="condition">The condition to evaluate.</param>
 173    /// <returns>The updated includable specification builder.</returns>
 174    public static IIncludableSpecificationBuilder<TEntity, TResult, TProperty> ThenInclude<TEntity, TResult, TPreviousPr
 175        this IIncludableSpecificationBuilder<TEntity, TResult, TPreviousProperty> builder,
 176        Expression<Func<TPreviousProperty, TProperty>> navigationSelector,
 177        bool condition)
 178        where TEntity : class
 179    {
 19180        if (condition && !Specification<TEntity, TResult>.IsChainDiscarded)
 181        {
 9182            builder.Specification.AddInternal(ItemType.Include, navigationSelector, (int)IncludeType.ThenInclude);
 183        }
 184        else
 185        {
 10186            Specification<TEntity, TResult>.IsChainDiscarded = true;
 187        }
 188
 19189        var includeBuilder = new IncludableSpecificationBuilder<TEntity, TResult, TProperty>(builder.Specification);
 19190        return includeBuilder;
 191    }
 192
 193    /// <summary>
 194    /// Adds a ThenInclude clause to the specification.
 195    /// </summary>
 196    /// <typeparam name="TEntity">The type of the entity.</typeparam>
 197    /// <typeparam name="TPreviousProperty">The type of the previous property.</typeparam>
 198    /// <typeparam name="TProperty">The type of the property.</typeparam>
 199    /// <param name="builder">The previous includable specification builder.</param>
 200    /// <param name="navigationSelector">The include expression.</param>
 201    /// <returns>The updated includable specification builder.</returns>
 202    public static IIncludableSpecificationBuilder<TEntity, TProperty> ThenInclude<TEntity, TPreviousProperty, TProperty>
 203        this IIncludableSpecificationBuilder<TEntity, TPreviousProperty> builder,
 204        Expression<Func<TPreviousProperty, TProperty>> navigationSelector)
 205        where TEntity : class
 23206        => ThenInclude(builder, navigationSelector, true);
 207
 208    /// <summary>
 209    /// Adds a ThenInclude clause to the specification if the condition is true.
 210    /// </summary>
 211    /// <typeparam name="TEntity">The type of the entity.</typeparam>
 212    /// <typeparam name="TPreviousProperty">The type of the previous property.</typeparam>
 213    /// <typeparam name="TProperty">The type of the property.</typeparam>
 214    /// <param name="builder">The previous includable specification builder.</param>
 215    /// <param name="navigationSelector">The include expression.</param>
 216    /// <param name="condition">The condition to evaluate.</param>
 217    /// <returns>The updated includable specification builder.</returns>
 218    public static IIncludableSpecificationBuilder<TEntity, TProperty> ThenInclude<TEntity, TPreviousProperty, TProperty>
 219        this IIncludableSpecificationBuilder<TEntity, TPreviousProperty> builder,
 220        Expression<Func<TPreviousProperty, TProperty>> navigationSelector,
 221        bool condition)
 222        where TEntity : class
 223    {
 27224        if (condition && !Specification<TEntity>.IsChainDiscarded)
 225        {
 17226            builder.Specification.AddInternal(ItemType.Include, navigationSelector, (int)IncludeType.ThenInclude);
 227        }
 228        else
 229        {
 10230            Specification<TEntity>.IsChainDiscarded = true;
 231        }
 232
 27233        var includeBuilder = new IncludableSpecificationBuilder<TEntity, TProperty>(builder.Specification);
 27234        return includeBuilder;
 235    }
 236
 237    /// <summary>
 238    /// Adds a ThenInclude clause to the specification.
 239    /// </summary>
 240    /// <typeparam name="TEntity">The type of the entity.</typeparam>
 241    /// <typeparam name="TResult">The type of the result.</typeparam>
 242    /// <typeparam name="TPreviousProperty">The type of the previous property.</typeparam>
 243    /// <typeparam name="TProperty">The type of the property.</typeparam>
 244    /// <param name="builder">The previous includable specification builder.</param>
 245    /// <param name="navigationSelector">The include expression.</param>
 246    /// <returns>The updated includable specification builder.</returns>
 247    public static IIncludableSpecificationBuilder<TEntity, TResult, TProperty> ThenInclude<TEntity, TResult, TPreviousPr
 248        this IIncludableSpecificationBuilder<TEntity, TResult, IEnumerable<TPreviousProperty>> builder,
 249        Expression<Func<TPreviousProperty, TProperty>> navigationSelector)
 250        where TEntity : class
 14251        => ThenInclude(builder, navigationSelector, true);
 252
 253    /// <summary>
 254    /// Adds a ThenInclude clause to the specification if the condition is true.
 255    /// </summary>
 256    /// <typeparam name="TEntity">The type of the entity.</typeparam>
 257    /// <typeparam name="TResult">The type of the result.</typeparam>
 258    /// <typeparam name="TPreviousProperty">The type of the previous property.</typeparam>
 259    /// <typeparam name="TProperty">The type of the property.</typeparam>
 260    /// <param name="builder">The previous includable specification builder.</param>
 261    /// <param name="navigationSelector">The include expression.</param>
 262    /// <param name="condition">The condition to evaluate.</param>
 263    /// <returns>The updated includable specification builder.</returns>
 264    public static IIncludableSpecificationBuilder<TEntity, TResult, TProperty> ThenInclude<TEntity, TResult, TPreviousPr
 265        this IIncludableSpecificationBuilder<TEntity, TResult, IEnumerable<TPreviousProperty>> builder,
 266        Expression<Func<TPreviousProperty, TProperty>> navigationSelector,
 267        bool condition)
 268        where TEntity : class
 269    {
 18270        if (condition && !Specification<TEntity, TResult>.IsChainDiscarded)
 271        {
 8272            builder.Specification.AddInternal(ItemType.Include, navigationSelector, (int)IncludeType.ThenInclude);
 273        }
 274        else
 275        {
 10276            Specification<TEntity, TResult>.IsChainDiscarded = true;
 277        }
 278
 18279        var includeBuilder = new IncludableSpecificationBuilder<TEntity, TResult, TProperty>(builder.Specification);
 18280        return includeBuilder;
 281    }
 282
 283    /// <summary>
 284    /// Adds a ThenInclude clause to the specification.
 285    /// </summary>
 286    /// <typeparam name="TEntity">The type of the entity.</typeparam>
 287    /// <typeparam name="TPreviousProperty">The type of the previous property.</typeparam>
 288    /// <typeparam name="TProperty">The type of the property.</typeparam>
 289    /// <param name="builder">The previous includable specification builder.</param>
 290    /// <param name="navigationSelector">The include expression.</param>
 291    /// <returns>The updated includable specification builder.</returns>
 292    public static IIncludableSpecificationBuilder<TEntity, TProperty> ThenInclude<TEntity, TPreviousProperty, TProperty>
 293        this IIncludableSpecificationBuilder<TEntity, IEnumerable<TPreviousProperty>> builder,
 294        Expression<Func<TPreviousProperty, TProperty>> navigationSelector)
 295        where TEntity : class
 23296        => ThenInclude(builder, navigationSelector, true);
 297
 298    /// <summary>
 299    /// Adds a ThenInclude clause to the specification if the condition is true.
 300    /// </summary>
 301    /// <typeparam name="TEntity">The type of the entity.</typeparam>
 302    /// <typeparam name="TPreviousProperty">The type of the previous property.</typeparam>
 303    /// <typeparam name="TProperty">The type of the property.</typeparam>
 304    /// <param name="builder">The previous includable specification builder.</param>
 305    /// <param name="navigationSelector">The include expression.</param>
 306    /// <param name="condition">The condition to evaluate.</param>
 307    /// <returns>The updated includable specification builder.</returns>
 308    public static IIncludableSpecificationBuilder<TEntity, TProperty> ThenInclude<TEntity, TPreviousProperty, TProperty>
 309        this IIncludableSpecificationBuilder<TEntity, IEnumerable<TPreviousProperty>> builder,
 310        Expression<Func<TPreviousProperty, TProperty>> navigationSelector,
 311        bool condition)
 312        where TEntity : class
 313    {
 27314        if (condition && !Specification<TEntity>.IsChainDiscarded)
 315        {
 17316            builder.Specification.AddInternal(ItemType.Include, navigationSelector, (int)IncludeType.ThenInclude);
 317        }
 318        else
 319        {
 10320            Specification<TEntity>.IsChainDiscarded = true;
 321        }
 322
 27323        var includeBuilder = new IncludableSpecificationBuilder<TEntity, TProperty>(builder.Specification);
 27324        return includeBuilder;
 325    }
 326}

/home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Builders/Builder_Like.cs

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3public static partial class SpecificationBuilderExtensions
 4{
 5    /// <summary>
 6    /// Adds a Like clause to the specification.
 7    /// </summary>
 8    /// <typeparam name="T">The type of the entity.</typeparam>
 9    /// <typeparam name="TResult">The type of the result.</typeparam>
 10    /// <param name="builder">The specification builder.</param>
 11    /// <param name="keySelector">The key selector expression.</param>
 12    /// <param name="pattern">The pattern to match.</param>
 13    /// <param name="group">The group number. Like clauses within the same group are evaluated using OR logic.</param>
 14    /// <returns>The updated specification builder.</returns>
 15    public static ISpecificationBuilder<T, TResult> Like<T, TResult>(
 16        this ISpecificationBuilder<T, TResult> builder,
 17        Expression<Func<T, string?>> keySelector,
 18        string pattern,
 19        int group = 1) where T : class
 1920        => Like(builder, keySelector, pattern, true, group);
 21
 22    /// <summary>
 23    /// Adds a Like clause to the specification if the condition is true.
 24    /// </summary>
 25    /// <typeparam name="T">The type of the entity.</typeparam>
 26    /// <typeparam name="TResult">The type of the result.</typeparam>
 27    /// <param name="builder">The specification builder.</param>
 28    /// <param name="keySelector">The key selector expression.</param>
 29    /// <param name="pattern">The pattern to match.</param>
 30    /// <param name="condition">The condition to evaluate.</param>
 31    /// <param name="group">The group number. Like clauses within the same group are evaluated using OR logic.</param>
 32    /// <returns>The updated specification builder.</returns>
 33    public static ISpecificationBuilder<T, TResult> Like<T, TResult>(
 34        this ISpecificationBuilder<T, TResult> builder,
 35        Expression<Func<T, string?>> keySelector,
 36        string pattern,
 37        bool condition,
 38        int group = 1) where T : class
 39    {
 2040        if (condition)
 41        {
 1942            var like = new SpecLike<T>(keySelector, pattern);
 1943            builder.Specification.AddInternal(ItemType.Like, like, group);
 44        }
 2045        return builder;
 46    }
 47
 48    /// <summary>
 49    /// Adds a Like clause to the specification.
 50    /// </summary>
 51    /// <typeparam name="T">The type of the entity.</typeparam>
 52    /// <param name="builder">The specification builder.</param>
 53    /// <param name="keySelector">The key selector expression.</param>
 54    /// <param name="pattern">The pattern to match.</param>
 55    /// <param name="group">The group number. Like clauses within the same group are evaluated using OR logic.</param>
 56    /// <returns>The updated specification builder.</returns>
 57    public static ISpecificationBuilder<T> Like<T>(
 58        this ISpecificationBuilder<T> builder,
 59        Expression<Func<T, string?>> keySelector,
 60        string pattern,
 61        int group = 1) where T : class
 5562        => Like(builder, keySelector, pattern, true, group);
 63
 64    /// <summary>
 65    /// Adds a Like clause to the specification if the condition is true.
 66    /// </summary>
 67    /// <typeparam name="T">The type of the entity.</typeparam>
 68    /// <param name="builder">The specification builder.</param>
 69    /// <param name="keySelector">The key selector expression.</param>
 70    /// <param name="pattern">The pattern to match.</param>
 71    /// <param name="condition">The condition to evaluate.</param>
 72    /// <param name="group">The group number. Like clauses within the same group are evaluated using OR logic.</param>
 73    /// <returns>The updated specification builder.</returns>
 74    public static ISpecificationBuilder<T> Like<T>(
 75        this ISpecificationBuilder<T> builder,
 76        Expression<Func<T, string?>> keySelector,
 77        string pattern,
 78        bool condition,
 79        int group = 1) where T : class
 80    {
 5681        if (condition)
 82        {
 5583            var like = new SpecLike<T>(keySelector, pattern);
 5584            builder.Specification.AddInternal(ItemType.Like, like, group);
 85        }
 5686        return builder;
 87    }
 88}

/home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Builders/Builder_Order.cs

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3public static partial class SpecificationBuilderExtensions
 4{
 5    /// <summary>
 6    /// Adds an OrderBy clause to the specification.
 7    /// </summary>
 8    /// <typeparam name="T">The type of the entity.</typeparam>
 9    /// <typeparam name="TResult">The type of the result.</typeparam>
 10    /// <param name="builder">The specification builder.</param>
 11    /// <param name="keySelector">The key selector expression.</param>
 12    /// <returns>The updated ordered specification builder.</returns>
 13    public static IOrderedSpecificationBuilder<T, TResult> OrderBy<T, TResult>(
 14        this ISpecificationBuilder<T, TResult> builder,
 15        Expression<Func<T, object?>> keySelector)
 2116        => OrderBy(builder, keySelector, true);
 17
 18    /// <summary>
 19    /// Adds an OrderBy clause to the specification if the condition is true.
 20    /// </summary>
 21    /// <typeparam name="T">The type of the entity.</typeparam>
 22    /// <typeparam name="TResult">The type of the result.</typeparam>
 23    /// <param name="builder">The specification builder.</param>
 24    /// <param name="keySelector">The key selector expression.</param>
 25    /// <param name="condition">The condition to evaluate.</param>
 26    /// <returns>The updated ordered specification builder.</returns>
 27    public static IOrderedSpecificationBuilder<T, TResult> OrderBy<T, TResult>(
 28        this ISpecificationBuilder<T, TResult> builder,
 29        Expression<Func<T, object?>> keySelector,
 30        bool condition)
 31    {
 2432        if (condition)
 33        {
 2134            builder.Specification.AddInternal(ItemType.Order, keySelector, (int)OrderType.OrderBy);
 35        }
 36
 2437        Specification<T, TResult>.IsChainDiscarded = !condition;
 2438        return (SpecificationBuilder<T, TResult>)builder;
 39    }
 40
 41    /// <summary>
 42    /// Adds an OrderBy clause to the specification.
 43    /// </summary>
 44    /// <typeparam name="T">The type of the entity.</typeparam>
 45    /// <param name="builder">The specification builder.</param>
 46    /// <param name="keySelector">The key selector expression.</param>
 47    /// <returns>The updated ordered specification builder.</returns>
 48    public static IOrderedSpecificationBuilder<T> OrderBy<T>(
 49        this ISpecificationBuilder<T> builder,
 50        Expression<Func<T, object?>> keySelector)
 3751        => OrderBy(builder, keySelector, true);
 52
 53    /// <summary>
 54    /// Adds an OrderBy clause to the specification if the condition is true.
 55    /// </summary>
 56    /// <typeparam name="T">The type of the entity.</typeparam>
 57    /// <param name="builder">The specification builder.</param>
 58    /// <param name="keySelector">The key selector expression.</param>
 59    /// <param name="condition">The condition to evaluate.</param>
 60    /// <returns>The updated ordered specification builder.</returns>
 61    public static IOrderedSpecificationBuilder<T> OrderBy<T>(
 62        this ISpecificationBuilder<T> builder,
 63        Expression<Func<T, object?>> keySelector,
 64        bool condition)
 65    {
 4066        if (condition)
 67        {
 3768            builder.Specification.AddInternal(ItemType.Order, keySelector, (int)OrderType.OrderBy);
 69        }
 70
 4071        Specification<T>.IsChainDiscarded = !condition;
 4072        return (SpecificationBuilder<T>)builder;
 73    }
 74
 75    /// <summary>
 76    /// Adds an OrderBy descending clause to the specification.
 77    /// </summary>
 78    /// <typeparam name="T">The type of the entity.</typeparam>
 79    /// <typeparam name="TResult">The type of the result.</typeparam>
 80    /// <param name="builder">The specification builder.</param>
 81    /// <param name="keySelector">The key selector expression.</param>
 82    /// <returns>The updated ordered specification builder.</returns>
 83    public static IOrderedSpecificationBuilder<T, TResult> OrderByDescending<T, TResult>(
 84        this ISpecificationBuilder<T, TResult> builder,
 85        Expression<Func<T, object?>> keySelector)
 386        => OrderByDescending(builder, keySelector, true);
 87
 88    /// <summary>
 89    /// Adds an OrderByDescending clause to the specification if the condition is true.
 90    /// </summary>
 91    /// <typeparam name="T">The type of the entity.</typeparam>
 92    /// <typeparam name="TResult">The type of the result.</typeparam>
 93    /// <param name="builder">The specification builder.</param>
 94    /// <param name="keySelector">The key selector expression.</param>
 95    /// <param name="condition">The condition to evaluate.</param>
 96    /// <returns>The updated ordered specification builder.</returns>
 97    public static IOrderedSpecificationBuilder<T, TResult> OrderByDescending<T, TResult>(
 98        this ISpecificationBuilder<T, TResult> builder,
 99        Expression<Func<T, object?>> keySelector,
 100        bool condition)
 101    {
 4102        if (condition)
 103        {
 3104            builder.Specification.AddInternal(ItemType.Order, keySelector, (int)OrderType.OrderByDescending);
 105        }
 106
 4107        Specification<T, TResult>.IsChainDiscarded = !condition;
 4108        return (SpecificationBuilder<T, TResult>)builder;
 109    }
 110
 111    /// <summary>
 112    /// Adds an OrderByDescending clause to the specification.
 113    /// </summary>
 114    /// <typeparam name="T">The type of the entity.</typeparam>
 115    /// <param name="builder">The specification builder.</param>
 116    /// <param name="keySelector">The key selector expression.</param>
 117    /// <returns>The updated ordered specification builder.</returns>
 118    public static IOrderedSpecificationBuilder<T> OrderByDescending<T>(
 119        this ISpecificationBuilder<T> builder,
 120        Expression<Func<T, object?>> keySelector)
 7121        => OrderByDescending(builder, keySelector, true);
 122
 123    /// <summary>
 124    /// Adds an OrderByDescending clause to the specification if the condition is true.
 125    /// </summary>
 126    /// <typeparam name="T">The type of the entity.</typeparam>
 127    /// <param name="builder">The specification builder.</param>
 128    /// <param name="keySelector">The key selector expression.</param>
 129    /// <param name="condition">The condition to evaluate.</param>
 130    /// <returns>The updated ordered specification builder.</returns>
 131    public static IOrderedSpecificationBuilder<T> OrderByDescending<T>(
 132        this ISpecificationBuilder<T> builder,
 133        Expression<Func<T, object?>> keySelector,
 134        bool condition)
 135    {
 8136        if (condition)
 137        {
 7138            builder.Specification.AddInternal(ItemType.Order, keySelector, (int)OrderType.OrderByDescending);
 139        }
 140
 8141        Specification<T>.IsChainDiscarded = !condition;
 8142        return (SpecificationBuilder<T>)builder;
 143    }
 144
 145    /// <summary>
 146    /// Adds a ThenBy clause to the specification.
 147    /// </summary>
 148    /// <typeparam name="T">The type of the entity.</typeparam>
 149    /// <typeparam name="TResult">The type of the result.</typeparam>
 150    /// <param name="builder">The ordered specification builder.</param>
 151    /// <param name="keySelector">The key selector expression.</param>
 152    /// <returns>The updated ordered specification builder.</returns>
 153    public static IOrderedSpecificationBuilder<T, TResult> ThenBy<T, TResult>(
 154        this IOrderedSpecificationBuilder<T, TResult> builder,
 155        Expression<Func<T, object?>> keySelector)
 7156        => ThenBy(builder, keySelector, true);
 157
 158    /// <summary>
 159    /// Adds a ThenBy clause to the specification if the condition is true.
 160    /// </summary>
 161    /// <typeparam name="T">The type of the entity.</typeparam>
 162    /// <typeparam name="TResult">The type of the result.</typeparam>
 163    /// <param name="builder">The ordered specification builder.</param>
 164    /// <param name="keySelector">The key selector expression.</param>
 165    /// <param name="condition">The condition to evaluate.</param>
 166    /// <returns>The updated ordered specification builder.</returns>
 167    public static IOrderedSpecificationBuilder<T, TResult> ThenBy<T, TResult>(
 168        this IOrderedSpecificationBuilder<T, TResult> builder,
 169        Expression<Func<T, object?>> keySelector,
 170        bool condition)
 171    {
 9172        if (condition && !Specification<T, TResult>.IsChainDiscarded)
 173        {
 5174            builder.Specification.AddInternal(ItemType.Order, keySelector, (int)OrderType.ThenBy);
 175        }
 176        else
 177        {
 4178            Specification<T, TResult>.IsChainDiscarded = true;
 179        }
 180
 9181        return builder;
 182    }
 183
 184    /// <summary>
 185    /// Adds a ThenBy clause to the specification.
 186    /// </summary>
 187    /// <typeparam name="T">The type of the entity.</typeparam>
 188    /// <param name="builder">The ordered specification builder.</param>
 189    /// <param name="keySelector">The key selector expression.</param>
 190    /// <returns>The updated ordered specification builder.</returns>
 191    public static IOrderedSpecificationBuilder<T> ThenBy<T>(
 192        this IOrderedSpecificationBuilder<T> builder,
 193        Expression<Func<T, object?>> keySelector)
 15194        => ThenBy(builder, keySelector, true);
 195
 196    /// <summary>
 197    /// Adds a ThenBy clause to the specification if the condition is true.
 198    /// </summary>
 199    /// <typeparam name="T">The type of the entity.</typeparam>
 200    /// <param name="builder">The ordered specification builder.</param>
 201    /// <param name="keySelector">The key selector expression.</param>
 202    /// <param name="condition">The condition to evaluate.</param>
 203    /// <returns>The updated ordered specification builder.</returns>
 204    public static IOrderedSpecificationBuilder<T> ThenBy<T>(
 205        this IOrderedSpecificationBuilder<T> builder,
 206        Expression<Func<T, object?>> keySelector,
 207        bool condition)
 208    {
 17209        if (condition && !Specification<T>.IsChainDiscarded)
 210        {
 13211            builder.Specification.AddInternal(ItemType.Order, keySelector, (int)OrderType.ThenBy);
 212        }
 213        else
 214        {
 4215            Specification<T>.IsChainDiscarded = true;
 216        }
 217
 17218        return builder;
 219    }
 220
 221    /// <summary>
 222    /// Adds a ThenByDescending clause to the specification.
 223    /// </summary>
 224    /// <typeparam name="T">The type of the entity.</typeparam>
 225    /// <typeparam name="TResult">The type of the result.</typeparam>
 226    /// <param name="builder">The ordered specification builder.</param>
 227    /// <param name="keySelector">The key selector expression.</param>
 228    /// <returns>The updated ordered specification builder.</returns>
 229    public static IOrderedSpecificationBuilder<T, TResult> ThenByDescending<T, TResult>(
 230        this IOrderedSpecificationBuilder<T, TResult> builder,
 231        Expression<Func<T, object?>> keySelector)
 11232        => ThenByDescending(builder, keySelector, true);
 233
 234    /// <summary>
 235    /// Adds a ThenByDescending clause to the specification if the condition is true.
 236    /// </summary>
 237    /// <typeparam name="T">The type of the entity.</typeparam>
 238    /// <typeparam name="TResult">The type of the result.</typeparam>
 239    /// <param name="builder">The ordered specification builder.</param>
 240    /// <param name="keySelector">The key selector expression.</param>
 241    /// <param name="condition">The condition to evaluate.</param>
 242    /// <returns>The updated ordered specification builder.</returns>
 243    public static IOrderedSpecificationBuilder<T, TResult> ThenByDescending<T, TResult>(
 244        this IOrderedSpecificationBuilder<T, TResult> builder,
 245        Expression<Func<T, object?>> keySelector,
 246        bool condition)
 247    {
 13248        if (condition && !Specification<T, TResult>.IsChainDiscarded)
 249        {
 9250            builder.Specification.AddInternal(ItemType.Order, keySelector, (int)OrderType.ThenByDescending);
 251        }
 252        else
 253        {
 4254            Specification<T, TResult>.IsChainDiscarded = true;
 255        }
 256
 13257        return builder;
 258    }
 259
 260    /// <summary>
 261    /// Adds a ThenByDescending clause to the specification.
 262    /// </summary>
 263    /// <typeparam name="T">The type of the entity.</typeparam>
 264    /// <param name="builder">The ordered specification builder.</param>
 265    /// <param name="keySelector">The key selector expression.</param>
 266    /// <returns>The updated ordered specification builder.</returns>
 267    public static IOrderedSpecificationBuilder<T> ThenByDescending<T>(
 268        this IOrderedSpecificationBuilder<T> builder,
 269        Expression<Func<T, object?>> keySelector)
 13270        => ThenByDescending(builder, keySelector, true);
 271
 272    /// <summary>
 273    /// Adds a ThenByDescending clause to the specification if the condition is true.
 274    /// </summary>
 275    /// <typeparam name="T">The type of the entity.</typeparam>
 276    /// <param name="builder">The ordered specification builder.</param>
 277    /// <param name="keySelector">The key selector expression.</param>
 278    /// <param name="condition">The condition to evaluate.</param>
 279    /// <returns>The updated ordered specification builder.</returns>
 280    public static IOrderedSpecificationBuilder<T> ThenByDescending<T>(
 281        this IOrderedSpecificationBuilder<T> builder,
 282        Expression<Func<T, object?>> keySelector,
 283        bool condition)
 284    {
 15285        if (condition && !Specification<T>.IsChainDiscarded)
 286        {
 11287            builder.Specification.AddInternal(ItemType.Order, keySelector, (int)OrderType.ThenByDescending);
 288        }
 289        else
 290        {
 4291            Specification<T>.IsChainDiscarded = true;
 292        }
 293
 15294        return builder;
 295    }
 296}

/home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Builders/Builder_Paging.cs

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3public static partial class SpecificationBuilderExtensions
 4{
 5    /// <summary>
 6    /// Sets the number of items to take in the specification.
 7    /// </summary>
 8    /// <typeparam name="T">The type of the entity.</typeparam>
 9    /// <typeparam name="TResult">The type of the result.</typeparam>
 10    /// <param name="builder">The specification builder.</param>
 11    /// <param name="take">The number of items to take.</param>
 12    /// <returns>The updated specification builder.</returns>
 13    public static ISpecificationBuilder<T, TResult> Take<T, TResult>(
 14        this ISpecificationBuilder<T, TResult> builder,
 15        int take)
 1716        => Take(builder, take, true);
 17
 18    /// <summary>
 19    /// Sets the number of items to take in the specification if the condition is true.
 20    /// </summary>
 21    /// <typeparam name="T">The type of the entity.</typeparam>
 22    /// <typeparam name="TResult">The type of the result.</typeparam>
 23    /// <param name="builder">The specification builder.</param>
 24    /// <param name="take">The number of items to take.</param>
 25    /// <param name="condition">The condition to evaluate.</param>
 26    /// <returns>The updated specification builder.</returns>
 27    public static ISpecificationBuilder<T, TResult> Take<T, TResult>(
 28        this ISpecificationBuilder<T, TResult> builder,
 29        int take,
 30        bool condition)
 31    {
 1832        if (condition)
 33        {
 1734            builder.Specification.GetOrCreate<SpecPaging>(ItemType.Paging).Take = take;
 35        }
 1836        return builder;
 37    }
 38
 39    /// <summary>
 40    /// Sets the number of items to take in the specification.
 41    /// </summary>
 42    /// <typeparam name="T">The type of the entity.</typeparam>
 43    /// <param name="builder">The specification builder.</param>
 44    /// <param name="take">The number of items to take.</param>
 45    /// <returns>The updated specification builder.</returns>
 46    public static ISpecificationBuilder<T> Take<T>(
 47        this ISpecificationBuilder<T> builder,
 48        int take)
 1749        => Take(builder, take, true);
 50
 51    /// <summary>
 52    /// Sets the number of items to take in the specification if the condition is true.
 53    /// </summary>
 54    /// <typeparam name="T">The type of the entity.</typeparam>
 55    /// <param name="builder">The specification builder.</param>
 56    /// <param name="take">The number of items to take.</param>
 57    /// <param name="condition">The condition to evaluate.</param>
 58    /// <returns>The updated specification builder.</returns>
 59    public static ISpecificationBuilder<T> Take<T>(
 60        this ISpecificationBuilder<T> builder,
 61        int take,
 62        bool condition)
 63    {
 1864        if (condition)
 65        {
 1766            builder.Specification.GetOrCreate<SpecPaging>(ItemType.Paging).Take = take;
 67        }
 1868        return builder;
 69    }
 70
 71    /// <summary>
 72    /// Sets the number of items to skip in the specification.
 73    /// </summary>
 74    /// <typeparam name="T">The type of the entity.</typeparam>
 75    /// <typeparam name="TResult">The type of the result.</typeparam>
 76    /// <param name="builder">The specification builder.</param>
 77    /// <param name="skip">The number of items to skip.</param>
 78    /// <returns>The updated specification builder.</returns>
 79    public static ISpecificationBuilder<T, TResult> Skip<T, TResult>(
 80        this ISpecificationBuilder<T, TResult> builder,
 81        int skip)
 1782        => Skip(builder, skip, true);
 83
 84    /// <summary>
 85    /// Sets the number of items to skip in the specification if the condition is true.
 86    /// </summary>
 87    /// <typeparam name="T">The type of the entity.</typeparam>
 88    /// <typeparam name="TResult">The type of the result.</typeparam>
 89    /// <param name="builder">The specification builder.</param>
 90    /// <param name="skip">The number of items to skip.</param>
 91    /// <param name="condition">The condition to evaluate.</param>
 92    /// <returns>The updated specification builder.</returns>
 93    public static ISpecificationBuilder<T, TResult> Skip<T, TResult>(
 94        this ISpecificationBuilder<T, TResult> builder,
 95        int skip,
 96        bool condition)
 97    {
 1898        if (condition)
 99        {
 17100            builder.Specification.GetOrCreate<SpecPaging>(ItemType.Paging).Skip = skip;
 101        }
 18102        return builder;
 103    }
 104
 105    /// <summary>
 106    /// Sets the number of items to skip in the specification.
 107    /// </summary>
 108    /// <typeparam name="T">The type of the entity.</typeparam>
 109    /// <param name="builder">The specification builder.</param>
 110    /// <param name="skip">The number of items to skip.</param>
 111    /// <returns>The updated specification builder.</returns>
 112    public static ISpecificationBuilder<T> Skip<T>(
 113        this ISpecificationBuilder<T> builder,
 114        int skip)
 18115        => Skip(builder, skip, true);
 116
 117    /// <summary>
 118    /// Sets the number of items to skip in the specification if the condition is true.
 119    /// </summary>
 120    /// <typeparam name="T">The type of the entity.</typeparam>
 121    /// <param name="builder">The specification builder.</param>
 122    /// <param name="skip">The number of items to skip.</param>
 123    /// <param name="condition">The condition to evaluate.</param>
 124    /// <returns>The updated specification builder.</returns>
 125    public static ISpecificationBuilder<T> Skip<T>(
 126        this ISpecificationBuilder<T> builder,
 127        int skip,
 128        bool condition)
 129    {
 19130        if (condition)
 131        {
 18132            builder.Specification.GetOrCreate<SpecPaging>(ItemType.Paging).Skip = skip;
 133        }
 19134        return builder;
 135    }
 136}

/home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Builders/Builder_Select.cs

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3public static partial class SpecificationBuilderExtensions
 4{
 5    /// <summary>
 6    /// Adds a Select clause to the specification.
 7    /// </summary>
 8    /// <typeparam name="T">The type of the entity.</typeparam>
 9    /// <typeparam name="TResult">The type of the result.</typeparam>
 10    /// <param name="builder">The specification builder.</param>
 11    /// <param name="selector">The selector expression.</param>
 12    public static void Select<T, TResult>(
 13        this ISpecificationBuilder<T, TResult> builder,
 14        Expression<Func<T, TResult>> selector)
 15    {
 2416        builder.Specification.AddOrUpdateInternal(ItemType.Select, selector, (int)SelectType.Select);
 2417    }
 18
 19    /// <summary>
 20    /// Adds a SelectMany clause to the specification.
 21    /// </summary>
 22    /// <typeparam name="T">The type of the entity.</typeparam>
 23    /// <typeparam name="TResult">The type of the result.</typeparam>
 24    /// <param name="builder">The specification builder.</param>
 25    /// <param name="selector">The selector expression.</param>
 26    public static void SelectMany<T, TResult>(
 27        this ISpecificationBuilder<T, TResult> builder,
 28        Expression<Func<T, IEnumerable<TResult>>> selector)
 29    {
 930        builder.Specification.AddOrUpdateInternal(ItemType.Select, selector, (int)SelectType.SelectMany);
 931    }
 32}

/home/runner/work/QuerySpecification/QuerySpecification/src/QuerySpecification/Builders/Builder_Where.cs

#LineLine coverage
 1namespace Pozitron.QuerySpecification;
 2
 3public static partial class SpecificationBuilderExtensions
 4{
 5    /// <summary>
 6    /// Adds a Where clause to the specification.
 7    /// </summary>
 8    /// <typeparam name="T">The type of the entity.</typeparam>
 9    /// <typeparam name="TResult">The type of the result.</typeparam>
 10    /// <param name="builder">The specification builder.</param>
 11    /// <param name="predicate">The predicate expression.</param>
 12    /// <returns>The updated specification builder.</returns>
 13    public static ISpecificationBuilder<T, TResult> Where<T, TResult>(
 14        this ISpecificationBuilder<T, TResult> builder,
 15        Expression<Func<T, bool>> predicate)
 2916        => Where(builder, predicate, true);
 17
 18    /// <summary>
 19    /// Adds a Where clause to the specification if the condition is true.
 20    /// </summary>
 21    /// <typeparam name="T">The type of the entity.</typeparam>
 22    /// <typeparam name="TResult">The type of the result.</typeparam>
 23    /// <param name="builder">The specification builder.</param>
 24    /// <param name="predicate">The predicate expression.</param>
 25    /// <param name="condition">The condition to evaluate.</param>
 26    /// <returns>The updated specification builder.</returns>
 27    public static ISpecificationBuilder<T, TResult> Where<T, TResult>(
 28        this ISpecificationBuilder<T, TResult> builder,
 29        Expression<Func<T, bool>> predicate,
 30        bool condition)
 31    {
 3032        if (condition)
 33        {
 2934            builder.Specification.AddInternal(ItemType.Where, predicate);
 35        }
 3036        return builder;
 37    }
 38
 39    /// <summary>
 40    /// Adds a Where clause to the specification.
 41    /// </summary>
 42    /// <typeparam name="T">The type of the entity.</typeparam>
 43    /// <param name="builder">The specification builder.</param>
 44    /// <param name="predicate">The predicate expression.</param>
 45    /// <returns>The updated specification builder.</returns>
 46    public static ISpecificationBuilder<T> Where<T>(
 47        this ISpecificationBuilder<T> builder,
 48        Expression<Func<T, bool>> predicate)
 6749        => Where(builder, predicate, true);
 50
 51    /// <summary>
 52    /// Adds a Where clause to the specification if the condition is true.
 53    /// </summary>
 54    /// <typeparam name="T">The type of the entity.</typeparam>
 55    /// <param name="builder">The specification builder.</param>
 56    /// <param name="predicate">The predicate expression.</param>
 57    /// <param name="condition">The condition to evaluate.</param>
 58    /// <returns>The updated specification builder.</returns>
 59    public static ISpecificationBuilder<T> Where<T>(
 60        this ISpecificationBuilder<T> builder,
 61        Expression<Func<T, bool>> predicate,
 62        bool condition)
 63    {
 6864        if (condition)
 65        {
 6766            builder.Specification.AddInternal(ItemType.Where, predicate);
 67        }
 6868        return builder;
 69    }
 70}

Methods/Properties

IgnoreQueryFilters(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>)
IgnoreQueryFilters(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Boolean)
IgnoreQueryFilters(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>)
IgnoreQueryFilters(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Boolean)
AsSplitQuery(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>)
AsSplitQuery(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Boolean)
AsSplitQuery(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>)
AsSplitQuery(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Boolean)
AsNoTracking(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>)
AsNoTracking(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Boolean)
AsNoTracking(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>)
AsNoTracking(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Boolean)
AsNoTrackingWithIdentityResolution(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>)
AsNoTrackingWithIdentityResolution(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Boolean)
AsNoTrackingWithIdentityResolution(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>)
AsNoTrackingWithIdentityResolution(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Boolean)
AsTracking(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>)
AsTracking(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Boolean)
AsTracking(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>)
AsTracking(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Boolean)
Include(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.String)
Include(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.String,System.Boolean)
Include(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.String)
Include(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.String,System.Boolean)
Include(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,TProperty>>)
Include(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,TProperty>>,System.Boolean)
Include(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,TProperty>>)
Include(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,TProperty>>,System.Boolean)
ThenInclude(Pozitron.QuerySpecification.IIncludableSpecificationBuilder`3<TEntity,TResult,TPreviousProperty>,System.Linq.Expressions.Expression`1<System.Func`2<TPreviousProperty,TProperty>>)
ThenInclude(Pozitron.QuerySpecification.IIncludableSpecificationBuilder`3<TEntity,TResult,TPreviousProperty>,System.Linq.Expressions.Expression`1<System.Func`2<TPreviousProperty,TProperty>>,System.Boolean)
ThenInclude(Pozitron.QuerySpecification.IIncludableSpecificationBuilder`2<TEntity,TPreviousProperty>,System.Linq.Expressions.Expression`1<System.Func`2<TPreviousProperty,TProperty>>)
ThenInclude(Pozitron.QuerySpecification.IIncludableSpecificationBuilder`2<TEntity,TPreviousProperty>,System.Linq.Expressions.Expression`1<System.Func`2<TPreviousProperty,TProperty>>,System.Boolean)
ThenInclude(Pozitron.QuerySpecification.IIncludableSpecificationBuilder`3<TEntity,TResult,System.Collections.Generic.IEnumerable`1<TPreviousProperty>>,System.Linq.Expressions.Expression`1<System.Func`2<TPreviousProperty,TProperty>>)
ThenInclude(Pozitron.QuerySpecification.IIncludableSpecificationBuilder`3<TEntity,TResult,System.Collections.Generic.IEnumerable`1<TPreviousProperty>>,System.Linq.Expressions.Expression`1<System.Func`2<TPreviousProperty,TProperty>>,System.Boolean)
ThenInclude(Pozitron.QuerySpecification.IIncludableSpecificationBuilder`2<TEntity,System.Collections.Generic.IEnumerable`1<TPreviousProperty>>,System.Linq.Expressions.Expression`1<System.Func`2<TPreviousProperty,TProperty>>)
ThenInclude(Pozitron.QuerySpecification.IIncludableSpecificationBuilder`2<TEntity,System.Collections.Generic.IEnumerable`1<TPreviousProperty>>,System.Linq.Expressions.Expression`1<System.Func`2<TPreviousProperty,TProperty>>,System.Boolean)
Like(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.String>>,System.String,System.Int32)
Like(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.String>>,System.String,System.Boolean,System.Int32)
Like(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.String>>,System.String,System.Int32)
Like(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.String>>,System.String,System.Boolean,System.Int32)
OrderBy(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>)
OrderBy(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>,System.Boolean)
OrderBy(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>)
OrderBy(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>,System.Boolean)
OrderByDescending(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>)
OrderByDescending(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>,System.Boolean)
OrderByDescending(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>)
OrderByDescending(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>,System.Boolean)
ThenBy(Pozitron.QuerySpecification.IOrderedSpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>)
ThenBy(Pozitron.QuerySpecification.IOrderedSpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>,System.Boolean)
ThenBy(Pozitron.QuerySpecification.IOrderedSpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>)
ThenBy(Pozitron.QuerySpecification.IOrderedSpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>,System.Boolean)
ThenByDescending(Pozitron.QuerySpecification.IOrderedSpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>)
ThenByDescending(Pozitron.QuerySpecification.IOrderedSpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>,System.Boolean)
ThenByDescending(Pozitron.QuerySpecification.IOrderedSpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>)
ThenByDescending(Pozitron.QuerySpecification.IOrderedSpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Object>>,System.Boolean)
Take(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Int32)
Take(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Int32,System.Boolean)
Take(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Int32)
Take(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Int32,System.Boolean)
Skip(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Int32)
Skip(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Int32,System.Boolean)
Skip(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Int32)
Skip(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Int32,System.Boolean)
Select(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,TResult>>)
SelectMany(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Collections.Generic.IEnumerable`1<TResult>>>)
Where(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Boolean>>)
Where(Pozitron.QuerySpecification.ISpecificationBuilder`2<T,TResult>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Boolean>>,System.Boolean)
Where(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Boolean>>)
Where(Pozitron.QuerySpecification.ISpecificationBuilder`1<T>,System.Linq.Expressions.Expression`1<System.Func`2<T,System.Boolean>>,System.Boolean)