diff --git a/src/PagedList/PagedListExtensions.cs b/src/PagedList/PagedListExtensions.cs index 912d410..66ad4eb 100644 --- a/src/PagedList/PagedListExtensions.cs +++ b/src/PagedList/PagedListExtensions.cs @@ -61,11 +61,13 @@ public static IEnumerable> Split(this IEnumerable superset, /// A subset of this collection of objects, split into pages of maximum size n. public static IEnumerable> Partition(this IEnumerable superset, int pageSize) { - if (superset.Count() < pageSize) + // Cache this to avoid evaluating it twice + int count = superset.Count(); + if (count < pageSize) yield return superset; else { - var numberOfPages = Math.Ceiling(superset.Count() / (double)pageSize); + var numberOfPages = Math.Ceiling(count / (double)pageSize); for (var i = 0; i < numberOfPages; i++) yield return superset.Skip(pageSize * i).Take(pageSize); }