Я хочу добавить метод для вычисления среднего значения в общий репозиторий моей сущности.Могу ли я сделать это действительно универсальным?Какой метод я должен использовать?Вот кое-что, о чем я думаю (это просто плохой пример в качестве отправной точки)?
Мой репозиторий сейчас
public interface IGenericRepository<TEntity> where TEntity : class
{
void Delete(object id);
void Delete(TEntity entityToDelete);
TEntity GetFirst(Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, string includeProperties = "");
IEnumerable<TEntity> Get(Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, string includeProperties = "");
PagedList<TEntity> GetPaged(int pageSize, int pageNumber, Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null, string includeProperties = "");
TEntity GetByID(object id);
void Insert(TEntity entity);
void Update(TEntity entityToUpdate);
}
BuildQuery:
private IQueryable<TEntity> BuildQuery(
Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
string includeProperties = "")
{
IQueryable<TEntity> query = _dbSet;
if (filter != null)
{
query = query.Where(filter);
}
foreach (var includeProperty in includeProperties.Split
(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries))
{
query = query.Include(includeProperty);
}
if (orderBy != null)
{
return orderBy(query);
}
else
{
return query;
}
}