コード例 #1
0
        /// <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);
            }
        }
コード例 #2
0
        /// <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);
            }
        }