Orchard CMS按ID订购商品

时间:2015-03-18 09:32:56

标签: orchardcms orchardcms-1.8

我需要列出具有不同ItemType s的项目。这些类型包括不同的部分。 默认内容查询按升序返回按ID排序的项目。我需要按降序获取列表。

IContentQuery<ContentItem>.OrderByDescending<TRecord>()方法需要通用参数(TRecord : ContentPartRecord),我应该使用它来构建排序creteria。但正如我所说,我的内容类型有不同的部分。

有些项目不包含CommonPartTitlePart,因此我无法将其用作获取ContentItem.ID的参数。

我的实际代码如下:

private IContentQuery<ContentItem> GetContentQuery() {            
    IContentQuery<ContentItem> query = _contentManager.Query(VersionOptions.Latest, 
                                                             Manager.DocConfig.Keys.ToArray());

        if (Manager != null) {
            switch (Manager.SortBy) {
                case SortOrder.Id: return query;
                                   // return query.OrderByDescending<CommonPartRecord>(cpr => cpr.Id);
                case SortOrder.Published : 
                                    return query.OrderByDescending<CommonPartRecord>(cpr => cpr.PublishedUtc);
                case SortOrder.TitlePart : 
                                    return query.OrderBy<TitlePartRecord>(tp => tp.Title);
                case SortOrder.Custom :
                                    var sf = Manager.SortFunc;
                                    return (sf == null) ? query : sf(query);
            }
        }

        return query;
    }

有可能吗?

1 个答案:

答案 0 :(得分:-1)

公共部分的创建日期是按创建日期排序的正确方法。使用id是一种可能以多种方式失败的黑客攻击。公共部分应该真正适用于所有内容类型。