51 lines
1.4 KiB
C#
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;
|
|
}
|
|
}
|
|
} |