mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-09-19 10:07:55 +08:00
Adding some extension methods around Slice, and ignoring zero values in skip and count.
--HG-- extra : convert_revision : svn%3A5ff7c347-ad56-4c35-b696-ccb81de16e03/trunk%4042276
This commit is contained in:
@@ -43,6 +43,15 @@ namespace Orchard.Models {
|
|||||||
public static IEnumerable<T> List<T>(this IContentQuery query) where T : class, IContent {
|
public static IEnumerable<T> List<T>(this IContentQuery query) where T : class, IContent {
|
||||||
return query.List().AsPart<T>();
|
return query.List().AsPart<T>();
|
||||||
}
|
}
|
||||||
|
public static IEnumerable<T> Slice<T>(this IContentQuery query, int skip, int count) where T : class, IContent {
|
||||||
|
return query.Slice(skip, count).AsPart<T>();
|
||||||
|
}
|
||||||
|
public static IEnumerable<T> Slice<T>(this IContentQuery query, int count) where T : class, IContent {
|
||||||
|
return query.Slice(0, count).AsPart<T>();
|
||||||
|
}
|
||||||
|
public static IEnumerable<ContentItem> Slice(this IContentQuery query, int count) {
|
||||||
|
return query.Slice(0, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@@ -37,7 +37,7 @@ namespace Orchard.Models {
|
|||||||
|
|
||||||
ICriteria BindCriteriaByPath(string path) {
|
ICriteria BindCriteriaByPath(string path) {
|
||||||
var itemCriteria = BindItemCriteria();
|
var itemCriteria = BindItemCriteria();
|
||||||
|
|
||||||
// special if the content item is ever used as where or order
|
// special if the content item is ever used as where or order
|
||||||
if (path == typeof(ContentItemRecord).Name)
|
if (path == typeof(ContentItemRecord).Name)
|
||||||
return itemCriteria;
|
return itemCriteria;
|
||||||
@@ -85,10 +85,10 @@ namespace Orchard.Models {
|
|||||||
|
|
||||||
// translate it into the nhibernate ordering
|
// translate it into the nhibernate ordering
|
||||||
var criteria = (CriteriaImpl)queryProvider.TranslateExpression(queryable.Expression);
|
var criteria = (CriteriaImpl)queryProvider.TranslateExpression(queryable.Expression);
|
||||||
|
|
||||||
// attaching orderings to the query's criteria
|
// attaching orderings to the query's criteria
|
||||||
var recordCriteria = BindCriteriaByPath(typeof(TRecord).Name);
|
var recordCriteria = BindCriteriaByPath(typeof(TRecord).Name);
|
||||||
foreach(var ordering in criteria.IterateOrderings()){
|
foreach (var ordering in criteria.IterateOrderings()) {
|
||||||
recordCriteria.AddOrder(ordering.Order);
|
recordCriteria.AddOrder(ordering.Order);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,9 +119,12 @@ namespace Orchard.Models {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<ContentItem> Slice(int skip, int count) {
|
public IEnumerable<ContentItem> Slice(int skip, int count) {
|
||||||
return BindItemCriteria()
|
var criteria = BindItemCriteria();
|
||||||
.SetFirstResult(skip)
|
if (skip != 0)
|
||||||
.SetMaxResults(count)
|
criteria = criteria.SetFirstResult(skip);
|
||||||
|
if (count != 0)
|
||||||
|
criteria = criteria.SetMaxResults(skip);
|
||||||
|
criteria
|
||||||
.List<ContentItemRecord>()
|
.List<ContentItemRecord>()
|
||||||
.Select(x => ContentManager.Get(x.Id));
|
.Select(x => ContentManager.Get(x.Id));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user