/// <summary> /// Gets a querable collection of type "E" with the specified parameters. /// </summary> /// <typeparam name="E">Entity type contained in class.</typeparam> /// <param name="request">Request with the specified parameters.</param> /// <param name="input">This is the input to apply the query.</param> /// <returns></returns> public static IQueryable <E> GetData <E>(this IQueryable <E> input, QueryParameters request) //where E : class, new() { var filterParameters = FilterParameters.GetFilterExpression <E>(request.FilterCollection); var result = input.GetData <E>(filterParameters.FilterExpression, string.Join(' ', request.SortingNames), request.PageIndex, request.RecordsCount, filterParameters.Parameters); return(result); }
/// <summary> /// Gets the response for a query. /// </summary> /// <typeparam name="E">Entity type.</typeparam> /// <param name="input">Query input.</param> /// <param name="request">Request.</param> /// <returns></returns> public static RecordResult GetResponse <E>(this IQueryable <E> input, QueryParameters request) { var filterParameters = FilterParameters.GetFilterExpression <E>(request.FilterCollection); var queryResult = input.GetData <E>(filterParameters.FilterExpression, string.Join(' ', request.SortingNames), request.PageIndex, request.RecordsCount, filterParameters.Parameters); var totalRecordsCount = input.GetCounter <E>(filterParameters.FilterExpression, filterParameters.Parameters); var result = new RecordResult() { PageIndex = request.PageIndex, TotalPagesCount = (int)System.Math.Ceiling((float)totalRecordsCount / (float)request.RecordsCount), TotalRecordsCount = totalRecordsCount, Records = queryResult.Cast <object>().ToList() }; return(result); }