Sky.Net/Core/Specifications/BaseSpecification.cs
2022-05-11 16:24:26 -07:00

51 lines
1.4 KiB
C#

using System.Linq.Expressions;
namespace Core.Specifications
{
public class BaseSpecification<T> : ISpecification<T>
{
public BaseSpecification()
{
}
public BaseSpecification(Expression<Func<T, bool>> criteria)
{
Criteria = criteria;
}
public Expression<Func<T, bool>> Criteria { get; }
public List<Expression<Func<T, object>>> Includes { get; } =
new List<Expression<Func<T, object>>>();
public Expression<Func<T, object>> OrderBy {get; private set;}
public Expression<Func<T, object>> OrderByDecending {get; private set;}
public int Take {get; private set;}
public int Skip {get; private set;}
public bool IsPagingEnabled {get; private set;}
protected void AddInclude(Expression<Func<T, object>> includeExpression)
{
Includes.Add(includeExpression);
}
protected void AddOrderBy(Expression<Func<T, object>> orderByExpression)
{
OrderBy = orderByExpression;
}
protected void AddOrdeByDescending(Expression<Func<T, object>> orderByDescExpression)
{
OrderByDecending = orderByDescExpression;
}
protected void ApplyPaging(int skip, int take)
{
Skip = skip;
Take = take;
IsPagingEnabled = true;
}
}
}