OData.Fluent.QueryBuilder
1.0.3
dotnet add package OData.Fluent.QueryBuilder --version 1.0.3
NuGet\Install-Package OData.Fluent.QueryBuilder -Version 1.0.3
<PackageReference Include="OData.Fluent.QueryBuilder" Version="1.0.3" />
<PackageVersion Include="OData.Fluent.QueryBuilder" Version="1.0.3" />
<PackageReference Include="OData.Fluent.QueryBuilder" />
paket add OData.Fluent.QueryBuilder --version 1.0.3
#r "nuget: OData.Fluent.QueryBuilder, 1.0.3"
#:package OData.Fluent.QueryBuilder@1.0.3
#addin nuget:?package=OData.Fluent.QueryBuilder&version=1.0.3
#tool nuget:?package=OData.Fluent.QueryBuilder&version=1.0.3
odata-query-builder
Simple fluent dotnet OData query builder.
The goal of this project is to provide an easy way of building OData query parameters, without the need to manually concatenate strings.
It is allows building queries for systems that don't necessarily conform to the OData standard. For example, Dynamics 365 OData endpoints.
Installation
To install OData.Fluent.QueryBuilder from Visual Studio, find OData.Fluent.QueryBuilder in the NuGet package manager user interface or enter the following command in the package manager console:
Install-Package OData.Fluent.QueryBuilder
To add a link to the main dotnet project, run the following command line:
dotnet add package OData.Fluent.QueryBuilder
OData Filter Builder
Simple filters
var filter = new ODataFilterBuilder()
.Where("Property1 eq 'Test'")
.Build();
Output: Property1 eq 'Test'
Multiple filters
var filter = new ODataFilterBuilder()
.Where(filter => filter
.Where("Property2 eq 'Test'")
.Or("Property2 eq 'Test'")
.And("Property3 eq 'Test'"))
.And(filter => filter
.Where("Property4 eq 'Test'"))
.Build();
Output: (Property2 eq 'Test' or Property2 eq 'Test' and Property3 eq 'Test') and (Property4 eq 'Test')
Filter Transformations
Manually transform filter before outputting the results.
This is useful when you want to apply a filter conditionally.
var filter = new ODataFilterBuilder()
.Where(filter => filter
.Where("Property2 eq 'Test'")
.Or("Property2 eq 'Test'")
.And("Property3 eq 'Test'")
.WithTransform(_ => string.Empty))
.And(filter => filter
.Where("Property4 eq 'Test'"))
.Build();
Output: (Property4 eq 'Test')
OData Select Builder
var results = new ODataSelectBuilder()
.Property("Test1")
.Property("Test2")
.Build();
or
var results = new ODataSelectBuilder()
.Properties("Test1", "Test2")
.Build();
Output: Test1,Test2
OData Request Builder
Build a full request with support for paging.
var oDataRequest = new ODataRequestBuilder<ExampleModel>()
.WithFilter(config => config
.Where("ProjectsPublished/ProjectStage eq Microsoft.Dynamics.DataEntities.ProjStatus'InProcess'")
.Or(filter => filter
.Where("ProjectsPublished/ProjectStage eq Microsoft.Dynamics.DataEntities.ProjStatus'Completed'")
.And($"ProjectsPublished/ActualEndDate le {DateTime.Today.AddMonths(-1).ToString("yyyy-MM-dd")}"))
.WithParameterName("filters")
.WithTransform(filter => $"({filter})"))
.WithPaging(config => config
.WithPageSize(10)
.WithParameterNames("limit", "offset")
.NextPageWhen((results, _) => results.Count > 0));
var results = await oDataRequest.ExecuteAsync(async request =>
{
var response = await client.GetAsync($"api/v1/data?{request.Query}");
var data = await response.Content.ReadFromJsonAsync<IEnumerable<ExampleModel>>();
return data ?? Enumerable.Empty<ExampleModel>();
});
Results will be combined and returned as a single collection.
| Product | Versions 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.