feat: add In and NotIn membership operators - #1
Merged
amirhosseinmp02 merged 5 commits intoOct 3, 2026
Merged
Conversation
…ith empty-list semantics
- Add ConditionOperator.In (11) and NotIn (12) to core enum - Extend ConditionSemantics to unwrap JsonArray and handle empty-list semantics - Add In/NotIn evaluation in InMemoryQueryEngine with null-safe logic - Add BuildMembershipIn in Dapper SqlQueryCompiler with per-element parameterization - Add Enumerable.Contains<T> expression building in EF Core ExpressionCompiler - Add 9 conformance tests covering all providers and edge cases - Add /api/users/filters/membership sample endpoint with HTTP request examples Empty-list semantics: IN [] matches nothing, NOT IN [] matches everything
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds set membership filtering (In and NotIn) across the full QueryForge stack, allowing callers to match or exclude a collection of values in a single condition instead of chaining multiple OR or AND NOT clauses.
Changes
Core Engine (PepperX.QueryForge):
Dapper Provider (PepperX.QueryForge.Dapper):
EF Core Provider (PepperX.QueryForge.EFCore):
Conformance Tests (PepperX.QueryForge.Conformance):
Sample WebApi (PepperX.QueryForge.Sample.WebApi):
Verification
All 183 unit and integration tests passing (dotnet test).