diff --git a/src/Orchard.Tests/ContentManagement/ContentQueryTests.cs b/src/Orchard.Tests/ContentManagement/ContentQueryTests.cs index 5652f0f71..cf7d8ca42 100644 --- a/src/Orchard.Tests/ContentManagement/ContentQueryTests.cs +++ b/src/Orchard.Tests/ContentManagement/ContentQueryTests.cs @@ -248,6 +248,15 @@ namespace Orchard.Tests.ContentManagement { } + [Test] + public void CountReturnsNumber() { + AddSampleData(); + + var count = _manager.Query() + .Count(); + + Assert.That(count, Is.EqualTo(4)); + } [Test] public void QueryShouldJoinVersionedRecords() { diff --git a/src/Orchard/ContentManagement/DefaultContentQuery.cs b/src/Orchard/ContentManagement/DefaultContentQuery.cs index 664d28b63..fe6e50b31 100644 --- a/src/Orchard/ContentManagement/DefaultContentQuery.cs +++ b/src/Orchard/ContentManagement/DefaultContentQuery.cs @@ -195,6 +195,11 @@ namespace Orchard.ContentManagement { return _query.Slice(0, 0).AsPart(); } + int IContentQuery.Count() { + var criteria = _query.BindItemVersionCriteria(); + return criteria.SetProjection( Projections.RowCount() ).UniqueResult(); + } + IEnumerable IContentQuery.Slice(int skip, int count) { return _query.Slice(skip, count).AsPart(); } diff --git a/src/Orchard/ContentManagement/IContentQuery.cs b/src/Orchard/ContentManagement/IContentQuery.cs index e44cc1baa..b436f1d4d 100644 --- a/src/Orchard/ContentManagement/IContentQuery.cs +++ b/src/Orchard/ContentManagement/IContentQuery.cs @@ -16,6 +16,7 @@ namespace Orchard.ContentManagement { IEnumerable List(); IEnumerable Slice(int skip, int count); + int Count(); IContentQuery Join() where TRecord : ContentPartRecord;