LogicBuilder.Structures
8.0.0
Prefix Reserved
dotnet add package LogicBuilder.Structures --version 8.0.0
NuGet\Install-Package LogicBuilder.Structures -Version 8.0.0
<PackageReference Include="LogicBuilder.Structures" Version="8.0.0" />
<PackageVersion Include="LogicBuilder.Structures" Version="8.0.0" />
<PackageReference Include="LogicBuilder.Structures" />
paket add LogicBuilder.Structures --version 8.0.0
#r "nuget: LogicBuilder.Structures, 8.0.0"
#:package LogicBuilder.Structures@8.0.0
#addin nuget:?package=LogicBuilder.Structures&version=8.0.0
#tool nuget:?package=LogicBuilder.Structures&version=8.0.0
LogicBuilder.Structures
A comprehensive metadata library for building dynamic LINQ expressions through descriptors. This library provides a rich set of classes that represent expression components, enabling the construction of complex LINQ queries from serializable metadata structures.
Purpose
LogicBuilder.Structures serves as the metadata foundation for the LogicBuilder.Expressions framework. Instead of writing LINQ expressions directly in code, developers can:
- Define expressions as metadata using descriptor classes
- Serialize and store query definitions independent of code
- Dynamically build LINQ Expression Trees at runtime
- Support data-driven query scenarios where query logic comes from configuration or user input
Key Features
Expression Building Blocks
- Binary Operations:
EqualsBinaryDescriptor,GreaterThanBinaryDescriptor,LessThanBinaryDescriptor, etc. - Logical Operations:
AndBinaryDescriptor,OrBinaryDescriptor,NotDescriptor - Arithmetic Operations:
AddBinaryDescriptor,SubtractBinaryDescriptor,MultiplyBinaryDescriptor,DivideBinaryDescriptor,ModuloBinaryDescriptor
Queryable Operations
- Filtering:
WhereDescriptor,AnyDescriptor,AllDescriptor - Projection:
SelectDescriptor,SelectManyDescriptor - Ordering:
OrderByDescriptor,ThenByDescriptor - Aggregation:
CountDescriptor,SumDescriptor,AverageDescriptor,MinDescriptor,MaxDescriptor - Paging:
SkipDescriptor,TakeDescriptor - Grouping:
GroupByDescriptor - Element Access:
FirstDescriptor,LastDescriptor,SingleDescriptor, and theirOrDefaultvariants
Collection Operations
- Set Operations:
UnionDescriptor,ConcatDescriptor,ExceptDescriptor - Collection Tests:
AnyDescriptor,AllDescriptor,ContainsDescriptor
String Functions
SubstringDescriptor,ContainsDescriptor,StartsWithDescriptor,EndsWithDescriptorToUpperDescriptor,ToLowerDescriptor,TrimDescriptorLengthDescriptor,IndexOfDescriptor,ConcatDescriptor
Date/Time Functions
- Component extraction:
YearDescriptor,MonthDescriptor,DayDescriptor,HourDescriptor,MinuteDescriptor,SecondDescriptor - Conversions:
ConvertToNumericDateDescriptor,ConvertToNumericTimeDescriptor - Fractional seconds:
FractionalSecondsDescriptor
Math Functions
FloorDescriptor,CeilingDescriptor,RoundDescriptor
Type Operations
- Casting:
CastDescriptor,ConvertDescriptor,CollectionCastDescriptor,CollectionOfTypeDescriptor - Type Checking:
IsOfDescriptor - Conversions:
ConvertToStringDescriptor,ConvertToEnumDescriptor,ConvertToNullableUnderlyingValueDescriptor
Member Access
MemberSelectorDescriptor- Access properties and fieldsParameterDescriptor- Define lambda parametersConstantDescriptor- Represent constant valuesCollectionConstantDescriptor- Represent collection constants
Custom Operations
CustomMethodDescriptor- Call custom methods on typesMemberInitDescriptor- Initialize anonymous types or objects
Integration
Works seamlessly with LogicBuilder.Expressions.Utils to:
- Map descriptors to LINQ Expression Trees via AutoMapper
- Execute dynamic queries against Entity Framework, LINQ to Objects, and other LINQ providers
- Build complex filtering, sorting, paging, and aggregation logic from configuration
Supported Scenarios
- OData-style filtering with complex predicates
- Dynamic reporting queries with runtime-defined aggregations
- Configurable business rules expressed as queryable filters
- User-defined search criteria converted to type-safe LINQ expressions
- Multi-tenant filtering applied dynamically based on context
Benefits
- Serializable: All descriptors are POCOs that can be JSON/XML serialized
- Type-safe: Generates strongly-typed LINQ expressions at runtime
- Testable: Expression logic can be unit tested through descriptors
- Maintainable: Query logic separated from code into data structures
- Extensible: Custom descriptors can be added for domain-specific needs
Related Libraries
- LogicBuilder.Expressions.Utils: Descriptors can be converted to their corresponding operators which generate executable LINQ expressions
- LogicBuilder.EntityFrameworkCore.SqlServer: Entity Framework integration and testing
| 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
- System.Text.Json (>= 10.0.5)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on LogicBuilder.Structures:
| Package | Downloads |
|---|---|
|
LogicBuilder.Expressions.Utils
Creates CRUD related LINQ queries from data. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 8.0.0 | 294 | 4/1/2026 |
| 7.1.0 | 658 | 1/12/2026 |
| 7.0.0 | 356,749 | 11/25/2024 |
| 6.0.3 | 1,267,385 | 11/3/2024 |
| 6.0.2 | 1,147 | 8/11/2024 |
| 6.0.1 | 3,567 | 3/28/2024 |
| 6.0.0 | 1,220,680 | 12/27/2023 |
| 5.0.12 | 10,882 | 10/14/2023 |
| 5.0.11 | 237 | 10/14/2023 |
| 5.0.10 | 185,125 | 8/15/2023 |
| 5.0.9 | 927 | 7/16/2023 |
| 5.0.8 | 1,176 | 5/10/2023 |
| 5.0.7 | 5,588 | 10/1/2022 |
| 5.0.6 | 615,479 | 6/16/2022 |
| 5.0.4 | 1,164,645 | 4/15/2022 |
| 5.0.3 | 1,864 | 4/15/2022 |
| 5.0.2 | 5,319 | 12/24/2021 |
| 5.0.1 | 1,350 | 12/14/2021 |
| 5.0.0 | 24,639 | 12/14/2021 |
| 4.1.3 | 2,243 | 9/8/2021 |
Refactoring to optimize DevOps.