Gridify 1.0.0

Additional Details

Gridify library APIs and object names change. please upgrade to the latest version

There is a newer version of this package available.
See the version list below for details.
dotnet add package Gridify --version 1.0.0                
NuGet\Install-Package Gridify -Version 1.0.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Gridify" Version="1.0.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Gridify --version 1.0.0                
#r "nuget: Gridify, 1.0.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Gridify as a Cake Addin
#addin nuget:?package=Gridify&version=1.0.0

// Install Gridify as a Cake Tool
#tool nuget:?package=Gridify&version=1.0.0                

Gridify

Easy and optimize way to apply paging, filtering and sorting using string based conditions and filed names.

The best use case of this library is Aspnet APIs when you need to get some string base filtering conditions or sort data by filed name or order data by propery name and use that information to retrieve requested data from a repository or database. at the end send back pageable sorted and filtered data to the user.

Available Extentions

Extention Description
ApplyFiltering Apply Filtering using string Filter property of QueryObject class and returns an IQueryable<T>
ApplyOrdering Apply Ordering using string SortBy and bool IsSortAsc properties of QueryObject class and returns an IQueryable<T>
ApplyPaging Apply paging using short Page and int PageSize properties of QueryObject class and returns an IQueryable<T>
ApplyOrderingAndPaging Apply Both Ordering and paging and returns an IQueryable<T>
ApplyEverything Apply Filtering,Ordering and paging and returns an IQueryable<T>
ApplyEverythingWithCount Like ApplyEverything but it returns a tuple (int Count,IQueryable<T> DataQuery). we can use Count, to create our pages.
Gridify Receives a QueryObject ,Load All requested data and returns Paging<T>. (Paging Class Has int TotalItems and List<T> Items)

Supported Filtering Operators

Name Operator Usage example
Equal == "FieldName == Value"
NotEqual != "FieldName != Value"
GreaterThan << "FieldName << Value"
LessThan >> "FieldName >> Value"
GreaterThanOrEqual >= "FieldName >= Value"
LessThanOrEqual <= "FieldName <= Value"
Contains - Like =* "FieldName =* Value"
NotContains - NotLike !* "FieldName =* Value"
AND - && , "FirstName==Value , LastName==Value2"
OR - || \| "FirstName==Value \| LastName==Value2"
Parenthesis () "( FirstName=* Jo , Age<<30) \| ( FirstName != Hn , Age>>30 )"

we can easily create complex queries using Parenthesis() with AND (,) + OR (|) operators.

Basic Usage example

// usually, we don't need to create this object manually
// for example, we get this object as a parameter from our API Controller
var filter = new QueryObject() 
{
    Filter = "FirstName == John",
    IsSortAsc = false,
    Page = 1,
    PageSize = 20,
    SortBy = "LastName"
};

Paging<Person> pData =
         myDbContext.Persons  // we can use Any list or repository or EntityFramework context
          .Gridify(filter); // Filter,Sort & Apply Paging 
          

// pData.TotalItems => Count persons with 'John', First name
// pData.Items      => First 20 Persons with 'John', First Name

Collaboration

Any collaboration to improve documentation and library is appreciated feel free to send pullrequest. ❤️

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages (12)

Showing the top 5 NuGet packages that depend on Gridify:

Package Downloads
Gridify.EntityFramework

Gridify (EntityFramework), Easy and optimized way to apply Filtering, Sorting, and Pagination using text-based data.

KoloDev.GDS.UI

Kolo GDS UI Accelerator

Chaosage.Core.Common

Chaosage开发平台公共对象库

EasyExtensions.EntityFrameworkCore

Ready-to-use library for simplifying the development of .NET applications.

NiuX.Common

csharp common, utils, helpers, tools etc.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Gridify:

Repository Stars
erwinkramer/bank-api
The Bank API is a design reference project suitable to bootstrap development for a compliant and modern API.
Version Downloads Last updated
2.15.1 3,818 11/14/2024
2.15.0 7,207 10/31/2024
2.15.0-preview7 2,900 8/28/2024
2.15.0-preview5 230 8/14/2024
2.15.0-preview4 643 7/18/2024
2.15.0-preview3 454 6/29/2024
2.15.0-preview2 296 6/22/2024
2.15.0-preview1 140 6/21/2024
2.14.2 90,260 6/8/2024
2.14.1 184,008 12/4/2023
2.14.0 5,848 11/18/2023
2.13.1 1,977 11/12/2023
2.13.0 276 11/11/2023
2.12.0 4,737 10/27/2023
2.11.1 20,794 10/6/2023
2.11.0 207 10/5/2023 2.11.0 is deprecated because it has critical bugs.
2.10.1 4,132 9/28/2023
2.10.0 2,153 9/20/2023
2.10.0-Preview1 134 9/19/2023
2.9.2 2,335 9/15/2023
2.9.1 9,558 8/22/2023
2.9.0 1,830 8/18/2023
2.8.4 63,797 4/18/2023
2.8.3 24,307 3/4/2023
2.8.2 52,695 12/7/2022
2.8.1 163,027 10/7/2022
2.8.0 11,335 7/22/2022
2.7.5 32,002 6/6/2022
2.7.4 25,320 4/22/2022
2.7.3 10,264 4/13/2022
2.7.2 1,067 4/12/2022
2.7.1 8,216 3/2/2022
2.7.0 777 3/1/2022
2.6.0 18,654 1/14/2022
2.5.0 6,022 12/27/2021
2.4.8 4,321 12/15/2021
2.4.7 415 12/14/2021
2.4.6 445 12/10/2021
2.4.5 628 12/5/2021
2.4.5-alpha5 220 12/5/2021
2.4.5-alpha4 233 12/5/2021
2.4.5-alpha3 181 12/2/2021
2.4.5-alpha1 192 12/2/2021
2.4.4 20,444 11/20/2021
2.4.3 838 11/19/2021
2.4.2 866 11/19/2021
2.4.1 2,309 11/18/2021
2.4.0 668 11/18/2021
2.3.3 581 11/16/2021
2.3.2 1,016 11/1/2021
2.3.1 1,354 10/19/2021
2.3.0 4,897 10/4/2021
2.2.1 501 9/30/2021
2.2.0 518 9/28/2021
2.1.0 4,156 9/21/2021
2.0.0 487 9/18/2021
2.0.0-beta.3 160 9/17/2021
2.0.0-beta.2 158 9/16/2021
2.0.0-beta.1 200 9/15/2021
2.0.0-alpha.1 197 8/12/2021
1.4.2 8,474 8/8/2021
1.4.1 607 8/4/2021
1.4.0 520 8/4/2021
1.3.5 1,132 7/28/2021
1.3.4 2,192 7/16/2021
1.3.3 758 7/1/2021
1.3.2 699 6/30/2021
1.3.1 686 6/23/2021
1.1.2 1,609 4/16/2021
1.1.1 624 4/16/2021
1.1.0 1,684 9/17/2020
1.0.5 10,134 7/3/2020
1.0.3 839 7/2/2020
1.0.2 958 7/2/2020 1.0.2 is deprecated because it is no longer maintained.
1.0.1 994 7/2/2020 1.0.1 is deprecated because it is no longer maintained.
1.0.0 1,259 7/1/2020 1.0.0 is deprecated because it is no longer maintained.