internal static IEnumerable<AlbumInfo> GetAnswerCollection(int pageSize, int pageIndex, SortInfo objSorting, IEnumerable<AlbumInfo> resultsCollection)
        {
            var defaultResults = resultsCollection.Skip(pageSize * pageIndex).Take(pageSize).ToList();

            if (objSorting != null)
                switch (objSorting.Column)
                {
                    case "oldest":
                        switch (objSorting.Direction)
                        {
                            case Constants.SortDirection.Descending:
                                return (from t in resultsCollection orderby t.AlbumID descending, t.CreatedOnDate descending select t).Skip(pageSize * pageIndex).Take(pageSize);
                            default:
                                return (from t in resultsCollection orderby t.AlbumID descending, t.CreatedOnDate ascending select t).Skip(pageSize * pageIndex).Take(pageSize);
                        }
                    case "active":
                        switch (objSorting.Direction)
                        {
                            case Constants.SortDirection.Descending:
                                return (from t in resultsCollection orderby t.AlbumID descending, t.LastModifiedOnDate descending select t).Skip(pageSize * pageIndex).Take(pageSize);
                            default:
                                return (from t in resultsCollection orderby t.AlbumID descending, t.LastModifiedOnDate ascending select t).Skip(pageSize * pageIndex).Take(pageSize);
                        }
                    default: // "votes";
                        //CUONGVV
                        switch (objSorting.Direction)
                        {
                            // we always want the accepted answer first, then number of votes, and finally if 2+ answers have same number of votes, we want the newest one on top.
                            case Constants.SortDirection.Descending:
                                return (from t in resultsCollection orderby t.AlbumID descending, t.CreatedOnDate descending select t).Skip(pageSize * pageIndex).Take(pageSize);
                            default:
                                return (from t in resultsCollection orderby t.AlbumID descending,t.CreatedOnDate descending select t).Skip(pageSize * pageIndex).Take(pageSize);
                        }
                }
            return defaultResults;
        }
        internal static IEnumerable<TermInfo> GetTermCollection(int pageSize, int pageIndex, SortInfo objSorting, IEnumerable<TermInfo> resultsCollection)
        {
            var defaultResults = resultsCollection.Skip(pageSize * pageIndex).Take(pageSize).ToList();

            if (objSorting != null)
                switch (objSorting.Column)
                {
                    case "name":
                        switch (objSorting.Direction)
                        {
                            case Constants.SortDirection.Descending:
                                return (from t in resultsCollection orderby t.Name descending select t).Skip(pageSize * pageIndex).Take(pageSize);
                            default:
                                return (from t in resultsCollection orderby t.Name ascending select t).Skip(pageSize * pageIndex).Take(pageSize);
                        }
                    case "popular":
                        switch (objSorting.Direction)
                        {
                            case Constants.SortDirection.Descending:
                                return (from t in resultsCollection orderby t.TotalTermUsage descending select t).Skip(pageSize * pageIndex).Take(pageSize);
                            default:
                                return (from t in resultsCollection orderby t.TotalTermUsage ascending select t).Skip(pageSize * pageIndex).Take(pageSize);
                        }
                    case "newest":
                        switch (objSorting.Direction)
                        {
                            case Constants.SortDirection.Descending:
                                return (from t in resultsCollection orderby t.CreatedOnDate descending select t).Skip(pageSize * pageIndex).Take(pageSize);
                            default:
                                return (from t in resultsCollection orderby t.CreatedOnDate ascending select t).Skip(pageSize * pageIndex).Take(pageSize);
                        }
                    default: // "daily";
                        switch (objSorting.Direction)
                        {
                            case Constants.SortDirection.Descending:
                                return (from t in resultsCollection orderby t.DayTermUsage descending select t).Skip(pageSize * pageIndex).Take(pageSize);
                            default:
                                return (from t in resultsCollection orderby t.DayTermUsage ascending select t).Skip(pageSize * pageIndex).Take(pageSize);
                        }
                }
            return defaultResults;
        }