public static IList <T> RetrieveAllWithPaging(string connectionName, string query, string sort, Direction direction, int page, int pageSize, out int itemsCount, out string errMsg, params object[] args) { IList <T> result = null; errMsg = string.Empty; itemsCount = 0; try { using (Database = DatabaseManager.GetDatabaseByName(connectionName, true)) { pageSize = pageSize <= 0 ? 10 : pageSize; var subResult = Database.Page <T>(page, pageSize, query, args); itemsCount = (int)subResult.TotalItems; result = subResult.Items; } if (direction == Direction.Default) { if (string.IsNullOrWhiteSpace(sort)) { result.OrderBy(x => x.ID); } else { result.OrderBy(x => x.GetType().GetProperties().Where(p => p.Name.ToLower() == sort.ToLower())); } } else { if (direction == Direction.Descending) { if (string.IsNullOrWhiteSpace(sort)) { result.OrderByDescending(x => x.ID); } else { result.OrderByDescending(x => x.GetType().GetProperties().Where(p => p.Name.ToLower() == sort.ToLower())); } } else { if (string.IsNullOrWhiteSpace(sort)) { result.OrderByDescending(x => x.ID); } else { result.OrderByDescending(x => x.GetType().GetProperties().Where(p => p.Name.ToLower() == sort.ToLower())); } } } } catch (Exception e) { errMsg = e.Message; } return(result); }