Connector
Connector is the logical operator that joins the children of a ConditionGroup. It applies to both flat Conditions and nested SubConditionGroups within the same group.
Values
| Value | Description | C# equivalent | SQL equivalent |
|---|---|---|---|
And | All children must evaluate to true. | && | AND |
Or | At least one child must evaluate to true. | || | OR |
JSON example — And
An And group where both predicates must hold.
{
"connector": "And",
"conditions": [
{
"sort": 1,
"field": "Name",
"dataType": "Text",
"operator": "IContains",
"values": ["john"]
},
{
"sort": 2,
"field": "Age",
"dataType": "Number",
"operator": "GreaterThanOrEqual",
"values": [18]
}
],
"subConditionGroups": []
}Generated SQL (illustrative):
WHERE LOWER(Name) LIKE '%john%' AND Age >= 18JSON example — Or
An Or group — either predicate is enough.
{
"connector": "Or",
"conditions": [
{
"sort": 1,
"field": "Role",
"dataType": "Text",
"operator": "Equal",
"values": ["Admin"]
},
{
"sort": 2,
"field": "Role",
"dataType": "Text",
"operator": "Equal",
"values": ["Manager"]
}
],
"subConditionGroups": []
}Generated SQL (illustrative):
WHERE Role = 'Admin' OR Role = 'Manager'Mixing connectors via nesting
A single ConditionGroup has exactly one Connector. To express compound logic like A AND (B OR C), put the Or branch in a SubConditionGroup.
{
"connector": "And",
"conditions": [
{
"sort": 1,
"field": "IsActive",
"dataType": "Boolean",
"operator": "Equal",
"values": [true]
}
],
"subConditionGroups": [
{
"sort": 1,
"connector": "Or",
"conditions": [
{ "sort": 1, "field": "Role", "dataType": "Text", "operator": "Equal", "values": ["Admin"] },
{ "sort": 2, "field": "Role", "dataType": "Text", "operator": "Equal", "values": ["Manager"] }
],
"subConditionGroups": []
}
]
}Equivalent SQL:
WHERE IsActive = 1 AND (Role = 'Admin' OR Role = 'Manager')Note
Sub-groups can nest to unlimited depth. The library validates that
Sort values are unique within each level of conditions and sub-groups.C# usage
using DynamicWhere.ex.Enums;
var group = new ConditionGroup
{
Connector = Connector.And,
Conditions = new List<Condition>
{
new Condition { Sort = 1, Field = "IsActive", DataType = DataType.Boolean, Operator = Operator.Equal, Values = new List<object> { true } }
}
};Related
- ConditionGroup → the class that carries the connector.
- Where (group) example → end-to-end JSON cookbook.