Comments (3)
Hi, yeah you're right.
I have prototyped it already but it's untested.
Try this:
/// <summary>
/// Asynchronously returns a paginated list of the documents matching the filter condition.
/// </summary>
/// <typeparam name="TDocument">The type representing a Document.</typeparam>
/// <param name="filter">A LINQ expression filter.</param>
/// <param name="sortSelector">The property selector.</param>
/// <param name="ascending">Order of the sorting.</param>
/// <param name="skipNumber">The number of documents you want to skip. Default value is 0.</param>
/// <param name="takeNumber">The number of documents you want to take. Default value is 50.</param>
/// <param name="partitionKey">An optional partition key.</param>
public virtual async Task<List<TDocument>> GetSortedPaginatedAsync<TDocument>(
Expression<Func<TDocument, bool>> filter,
Expression<Func<TDocument, object>> sortSelector,
bool ascending = true,
int skipNumber = 0,
int takeNumber = 50,
string partitionKey = null)
where TDocument : IDocument
{
var sorting = ascending
? Builders<TDocument>.Sort.Ascending(sortSelector)
: Builders<TDocument>.Sort.Descending(sortSelector);
return await HandlePartitioned<TDocument>(partitionKey)
.Find(filter)
.Sort(sorting)
.Skip(skipNumber)
.Limit(takeNumber)
.ToListAsync();
}
As you can see quite a few extra params are needed. I might create a class called PaginationOptions
to reduce the number of params.
from mongodb-generic-repository.
Looks good, except for a scenario where you want to sort by multiple columns.
I believe Builders.Sort has a Combine method that can combine multiple sort definitions at least that's what I used.
Probably it would be best to provide an overload that takes SortDefinition and show in the docs that you can use that for both single and multiple column sorting scenarios.
Also an overload taking PaginationOptions sounds good.
BTW. Thank you for your fantastic work it saved me a ton of time!
from mongodb-generic-repository.
Done.
https://github.com/alexandre-spieser/mongodb-generic-repository/releases/tag/1.3.9
from mongodb-generic-repository.
Related Issues (20)
- Question : How to update more sub documents HOT 1
- The MongoDb accessor enable override HOT 6
- Run CoreIntegrationTests Handler Error HOT 5
- MongoDB stored procedure HOT 1
- Fix Nuget package HOT 5
- Is Upsert Possible? HOT 2
- Remove code that modified global MongoDB Driver Settings HOT 3
- Add UpdateMany() method to IBaseMongoRepository_Update HOT 5
- Random is a false random generate,why dou you use it yet HOT 1
- Question: is it possible to get only some fields on select ? HOT 3
- The CancellationToken class needs to be supported in CRUD methods HOT 5
- AddOneAsync always generate new _id HOT 1
- After updating to 1.4.5 or 1.4.4, does not show any docs HOT 3
- Is it possible to use with .Net 4.8? HOT 1
- How to use with Aggregate AllowDiskUse
- BsonDiscriminator Implementation
- Documents don't show up in Azure Cosmos DB data explorer
- Help with unit test for custom use cases
- Security Updates HOT 1
- Scoped repository/multitenancy HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mongodb-generic-repository.