using AutoMapper; using Kean.Infrastructure.Database; namespace Kean.Application.Query { /// /// 扩展方法 /// internal static class ExtensionMethods { /// /// 排序 /// /// 实体类型 /// 视图类型 /// 数据库对象 /// 排序信息 /// 映射器 /// 数据库对象 internal static ISchema Sort(this ISchema schema, string sort, IMapper mapper) where TEntity : IEntity { if (!string.IsNullOrEmpty(sort)) { var order = sort[0] == '~' ? Order.Descending : Order.Ascending; var column = order == Order.Descending ? sort[1..] : sort; var expression = mapper.GetPropertyMapExpression(column); if (expression != null) { schema = schema.OrderBy(expression, order); } } return schema; } /// /// 分页 /// /// 实体类型 /// 数据库对象 /// 偏移 /// 限制 /// 数据库对象 internal static ISchema Page(this ISchema schema, int? offset, int? limit) where TEntity : IEntity { if (offset.HasValue) { schema = schema.Skip(offset.Value); } if (limit.HasValue) { schema = schema.Take(limit.Value); } return schema; } } }