private static DataSourceRequest GetDataSourceRequest(DatatableRequest request) { DataSourceRequest dataSourceRequest = new DataSourceRequest() { Take = request.length, Skip = request.start }; if (request.order != null) { List <Sort> sorts = new List <Sort>(); foreach (var item in request.order) { sorts.Add(new Sort { Field = request.columns[item.column].data, Dir = item.dir }); } dataSourceRequest.Sort = sorts; } if (request.columns != null) { List <Filter> filters = new List <Filter>(); foreach (var column in request.columns) { if (column.search == null || string.IsNullOrEmpty(column.search.value)) { continue; } filters.Add(new Filter { Field = !string.IsNullOrEmpty(column.search.field) ? column.search.field : column.name, Operator = column.search.Operator, Value = column.search.value }); } if (filters.Count > 0) { dataSourceRequest.Filter = new Filter() { Logic = "and", Filters = filters }; } } return(dataSourceRequest); }
public static DatatableResult <T> ToDatatableResult <T>(this IQueryable <T> queryable, DatatableRequest request) { DataSourceRequest dataSourceRequest = GetDataSourceRequest(request); var result = queryable.ToDataSourceResult(dataSourceRequest.Take, dataSourceRequest.Skip, dataSourceRequest.Sort, dataSourceRequest.Filter, null); return(new DatatableResult <T> { data = result.data, recordsFiltered = result.total, recordsTotal = result.total, draw = request.draw }); }