/// <summary> /// Crea una exprecion para ordenar /// </summary> /// <typeparam name="T">Tipo de dato del repositorio "Model.Template"</typeparam> /// <param name="objSorterList">Lista de ordenamientos a aplicar</param> /// <returns>Expression de clausula Where</returns> public IEnumerable <T> OrderByColumnName <T>(IEnumerable <T> collection, string columnName, bool ascendig) { try { if (collection == null) { return(collection); } if (collection.Count() < 2) { return(collection); } if (string.IsNullOrWhiteSpace(columnName)) { return(collection); } Func <IEnumerable <T>, Func <T, object>, IEnumerable <T> > expression = new SortExpressionConverter <T>().Convert(ascendig); Func <T, object> lambda = SortLambdaBuilder <T> .Build(columnName); collection = expression(collection, lambda); return(collection); } catch (Exception) { return(collection); } }
/// <summary> /// Aplica el ordenamiento sobre una lista /// </summary> /// <typeparam name="T">Tipo de Base de la lista</typeparam> /// <param name="collection">Lista</param> /// <param name="columnName">Nombre de columna</param> /// <param name="ascendig">Orden ascendente</param> /// <returns>Lista despues de aplicar los filtros</returns> public IEnumerable <T> OrderBySorter <T>(IEnumerable <T> collection, Sorter sorter) { try { if (collection == null) { return(collection); } if (collection.Count() < 2) { return(collection); } if (sorter == null) { return(collection); } if (string.IsNullOrWhiteSpace(sorter.PropertyName)) { return(collection); } Func <IEnumerable <T>, Func <T, object>, IEnumerable <T> > expression = new SortExpressionConverter <T>().Convert(sorter.SortDirection); Func <T, object> lambda = SortLambdaBuilder <T> .Build(sorter.PropertyName); collection = expression(collection, lambda); return(collection); } catch (Exception) { return(collection); } }