コード例 #1
0
        private IOrderedEnumerable <TEntity> ApplySorting(IEnumerable <TEntity> listWithMofifiersApplied)
        {
            var sortByFirstCriterion = SortModifiers.First();
            IOrderedEnumerable <TEntity> sortedList;

            if (sortByFirstCriterion.Asc)
            {
                sortedList = listWithMofifiersApplied.OrderBy(sortByFirstCriterion.SortByExpression);
            }
            else
            {
                sortedList = listWithMofifiersApplied.OrderByDescending(sortByFirstCriterion.SortByExpression);
            }

            var sortByAddtionalCriteria = SortModifiers.Skip(1); // Sort by more than one column => loop trough all the rest columns

            foreach (var sortMod in sortByAddtionalCriteria)
            {
                if (sortMod.Asc)
                {
                    sortedList = sortedList.ThenBy(sortMod.SortByExpression);
                }
                else
                {
                    sortedList = sortedList.ThenByDescending(sortMod.SortByExpression);
                }
            }

            return(sortedList);
        }