public static List <TEntity> FiltrarPorBusqueda <TEntity>(RequestPaginado param, List <TEntity> lista) { if (string.IsNullOrEmpty(param.Search.Value)) { return(lista); } Expression <Func <TEntity, bool> > expr = x => false; var propiedades = typeof(TEntity).GetProperties(); //Por cada propiedad hace el filtrado foreach (var propertyInfo in propiedades) { //Se usa LinqKit para poder usar metodo Or expr = expr.Or(x => x.GetType().GetProperty(propertyInfo.Name).GetValue(x, null) != null && x.GetType().GetProperty(propertyInfo.Name).GetValue(x, null).ToString() .Contains(param.Search.Value)); } lista = lista.AsQueryable() .Where(expr) .ToList(); return(lista); }
public IHttpActionResult PostGet(bool paginado, RequestPaginado param) { if (paginado == false) // Si no se manda paginado en true entonces obtiene todos los datos sin paginar { return(Get()); } var listaUsuarios = _usuarioService.ObtenListaUsuarios(); var totalUs = listaUsuarios.Count; listaUsuarios = DataTableUtils.FiltrarPorBusqueda(param, listaUsuarios); listaUsuarios = DataTableUtils.Ordenar(param, listaUsuarios); var datosPagina = listaUsuarios .Skip(param.Start) .Take(param.Length) .ToList(); var result = new ResultadoPaginado <Usuario>() { Data = datosPagina, Draw = param.Draw, RecordsFiltered = listaUsuarios.Count, RecordsTotal = totalUs }; return(Ok(result)); }
public static List <TEntity> Ordenar <TEntity>(RequestPaginado param, List <TEntity> listaUsuarios) { var propiedades = typeof(TEntity).GetProperties(); //por cada propiedad revisa si hay que aplicar ordenamiento foreach (var propertyInfo in propiedades) { if (param.Columns[param.Order[0].Column].Data.ToUpper() == propertyInfo.Name.ToUpper() && param.Order[0].Dir == "asc") { listaUsuarios = listaUsuarios.OrderBy(x => x.GetType().GetProperty(propertyInfo.Name)?.GetValue(x, null)) .ToList(); } if (param.Columns[param.Order[0].Column].Data.ToUpper() == propertyInfo.Name.ToUpper() && param.Order[0].Dir == "desc") { listaUsuarios = listaUsuarios .OrderByDescending(x => x.GetType().GetProperty(propertyInfo.Name)?.GetValue(x, null)).ToList(); } } return(listaUsuarios); }