跳到主要内容

查询操作符说明

在系统中查询数据时,使用 DynamicFilter 对象构建查询条件。DynamicFilter 支持单条件和嵌套的复杂条件(通过逻辑运算符组合)。

模型定义​

public class DynamicFilter
{
/// <summary>字段名</summary>
public string Field { get; set; }

/// <summary>操作符</summary>
public FilterOperator Operator { get; set; }

/// <summary>值</summary>
public object Value { get; set; }

/// <summary>值的类型(可选,默认自动推断)</summary>
public FilterValueType ValueType { get; set; } = FilterValueType.Default;

/// <summary>子条件的逻辑关系(And / Or)</summary>
public FilterLogic Logic { get; set; }

/// <summary>子条件列表(与当前 Logic 组合)</summary>
public List<DynamicFilter> Filters { get; set; }
}

简单条件​

单条查询条件,直接设置 Field、Operator、Value:

{
"Field": "studentid",
"Operator": "Eq",
"Value": "2025"
}

C# 代码:

var filter = new DynamicFilter
{
Field = "studentid",
Operator = FilterOperator.Eq,
Value = "2025"
};

复杂条件​

通过 Logic + Filters 构建多条件的与/或组合。Filters 中的每个元素都是 DynamicFilter,支持递归嵌套:

{
"Logic": "And",
"Filters": [
{
"Field": "studentid",
"Operator": "Eq",
"Value": "2025"
},
{
"Field": "name",
"Operator": "Eq",
"Value": "张三"
},
{
"Logic": "Or",
"Filters": [
{
"Field": "status",
"Operator": "Ct",
"Value": "active"
},
{
"Field": "status",
"Operator": "Ct",
"Value": "pending"
}
]
},
{
"Logic": "And",
"Filters": [
{
"Field": "score",
"Operator": "Gte",
"Value": 1
},
{
"Field": "score",
"Operator": "Lte",
"Value": 2
}
]
}
]
}

C# 代码:

var filter = new DynamicFilter
{
Logic = FilterLogic.And,
Filters = new List<DynamicFilter>
{
new() { Field = "studentid", Operator = FilterOperator.Eq, Value = "2025" },
new() { Field = "name", Operator = FilterOperator.Eq, Value = "张三" },
new DynamicFilter
{
Logic = FilterLogic.Or,
Filters = new List<DynamicFilter>
{
new() { Field = "status", Operator = FilterOperator.Ct, Value = "active" },
new() { Field = "status", Operator = FilterOperator.Ct, Value = "pending" }
}
},
new DynamicFilter
{
Logic = FilterLogic.And,
Filters = new List<DynamicFilter>
{
new() { Field = "score", Operator = FilterOperator.Gte, Value = 1 },
new() { Field = "score", Operator = FilterOperator.Lte, Value = 2 }
}
}
}
};

逻辑操作符​

条件之间的逻辑关系:

值说明
And子条件之间为 与 关系(全部满足)
Or子条件之间为 或 关系(满足任一即可)

对应枚举:FilterLogic.And / FilterLogic.Or

查询操作符​

操作符枚举值说明适用类型Value 格式
EqEq等于字符、日期、数字、Guid直接值
NeNe不等于字符、日期、数字、Guid直接值
CtCt包含(Contains)字符字符串
NctNct不包含(Not Contains)字符字符串
SwSw以...开头(Start With)字符字符串
EwEw以...结尾(End With)字符字符串
NswNsw不以...开头(Not Start With)字符字符串
NewNew不以...结尾(Not End With)字符字符串
GtGt大于(Greater Than)数字、日期数字 / 日期值
GteGte大于等于数字、日期数字 / 日期值
LtLt小于(Less Than)数字、日期数字 / 日期值
LteLte小于等于数字、日期数字 / 日期值
InIn在列表中(IN)任意逗号分隔字符串或数组
NinNin不在列表中(NOT IN)任意逗号分隔字符串或数组
ActAct数组包含(Array Contains)数组字段逗号分隔字符串

值类型(ValueType)​

可选属性,用于明确指定值的类型。通常不需要手动设置,系统会根据 Value 自动推断:

值说明
Default默认,由系统自动推断
String字符串类型
Number数字类型
DateTime日期时间类型
Boolean布尔类型
GuidGUID 类型

对应枚举:FilterValueType.Default / .String / .Number / .DateTime / .Boolean / .Guid

FilterBuilder 辅助类​

为方便快速构建 filter,平台提供了 FilterBuilder 类:

逻辑组合​

// And 条件
var filter = FilterBuilder.And(
FilterBuilder.Eq("appId", "1123"),
FilterBuilder.Ne("name", "test")
);

// Or 条件
var filter = FilterBuilder.Or(
FilterBuilder.Ct("title", "重要"),
FilterBuilder.Ct("title", "紧急")
);

// 嵌套组合
var filter = FilterBuilder.And(
FilterBuilder.Gte("amount", 1000),
FilterBuilder.Or(
FilterBuilder.Eq("status", "Approved"),
FilterBuilder.Eq("status", "Pending")
)
);

可用方法​

方法说明对应操作符
FilterBuilder.And(params filters)构建 And 逻辑条件—
FilterBuilder.Or(params filters)构建 Or 逻辑条件—
FilterBuilder.Eq(field, value)等于Eq
FilterBuilder.Ne(field, value)不等于Ne
FilterBuilder.Gt(field, value)大于Gt
FilterBuilder.Gte(field, value)大于等于Gte
FilterBuilder.Lt(field, value)小于Lt
FilterBuilder.Lte(field, value)小于等于Lte
FilterBuilder.Ct(field, value)包含Ct
FilterBuilder.In(field, value)在列表中In

相关文档​