我需要列出具有不同ItemType
s的项目。这些类型包括不同的部分。
默认内容查询按升序返回按ID排序的项目。我需要按降序获取列表。
IContentQuery<ContentItem>.OrderByDescending<TRecord>()
方法需要通用参数(TRecord : ContentPartRecord
),我应该使用它来构建排序creteria。但正如我所说,我的内容类型有不同的部分。
有些项目不包含CommonPart
或TitlePart
,因此我无法将其用作获取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;
}
有可能吗?
答案 0 :(得分:-1)
公共部分的创建日期是按创建日期排序的正确方法。使用id是一种可能以多种方式失败的黑客攻击。公共部分应该真正适用于所有内容类型。