- Added the opt-in
AsRaffinertQuery()facade for expanding reusable conditions and projections throughout C# LINQ query syntax without replacing the underlying provider. - Added full query-expression-pattern support, including multiple
fromclauses, joins, group joins, ordering, grouping, continuations, and explicit range types. - Added provider-independent
ToListAsyncandToArrayAsyncforwarding onnetstandard2.1. - Added query-syntax unit tests and EF Core SQLite translation and async tests.
- Added the internal expression-expansion seam used by
Raffinert.Expressions.QuerySyntaxwhile keeping the core package public API focused on expression composition and LINQ method-style extensions. - Kept the core package on
netstandard2.0with no new runtime dependency. - Added queryable and enumerable composable-expression overloads for condition terminals, ordering, grouping, and flattening.
- Added unit coverage for the full extension surface and EF Core SQLite coverage for expression expansion and translation.
- Added
Projection<TSource>.Create(...)for inferring projection result types from the expression, including anonymous types. - Updated unit and EF Core integration coverage to use the inferred projection factory.
- Aggregated reusable condition and projection APIs in
Raffinert.Expressions. - Renamed
Spec<T>andProj<TIn,TOut>toCondition<T>andProjection<TSource,TResult>. - Renamed
Expr<TIn,TOut>toComposableExpression<TSource,TResult>and clarified the internal expression-expansion contract. - Added a shared expression expansion engine and canonical
Invokecomposition API. - Added mixed
Condition/Projectioncomposition and typedThencomposition. - Added a single canonical
InvokeAPI, sharedInvokeOrDefaultnull/default lifting, LINQ extensions, method-group expansion, and debugger views. - Removed the legacy
IsSatisfiedBy,Map, andMapIfNotNullaliases in favor of the canonical methods. - Changed constant
Condition<T>.TrueandCondition<T>.Falsefactories into cached static properties. - Added deterministic binding conflict policies and safer map-to-existing behavior.
- Added direct structural source adaptation for conditions and source/result adaptation for projections.
- Added
MapToExistingclear-and-refill semantics for mutable collections, collection-initializer bindings, null/empty handling, missing writable collections, and aliased source/destination collections. - Kept replacement behavior for arrays, writable
IEnumerable<T>members, and known read-only collection wrappers. - Added unit and EF Core SQLite integration coverage.