namespace Dpz.Core.Entity.Base.ExpressTreeQuery;
/// <summary>
/// 定义查询过滤条件的枚举
/// 用于指定在生成表达式树时,如何验证和处理请求参数的值
/// </summary>
public enum FilterCondition
{
/// <summary>
/// 验证值不为 null
/// 适用于所有可空类型
/// </summary>
NotNull,
/// <summary>
/// 验证字符串不为 null 且不为空字符串
/// 仅适用于 <see cref="string"/> 类型
/// 等同于 <![CDATA[value != null && value != ""]]>
/// </summary>
NotNullOrEmpty,
/// <summary>
/// 验证字符串不为 null 且不为空字符串且不为纯空白字符
/// 仅适用于 <see cref="string"/> 类型
/// 等同于 <![CDATA[value != null && value.Trim() != ""]]>
/// </summary>
NotNullOrWhiteSpace,
/// <summary>
/// 验证集合不为 null 且包含至少一个元素,用于 IN 查询(左侧包含关系)
/// 适用于实现了 <see cref="System.Collections.IEnumerable"/> 接口的类型
/// 配合 <see cref="Comparison.Contains"/> 使用时,生成:<![CDATA[request.Collection.Contains(entity.Field)]]>
/// 意义:请求参数是集合,实体字段是单值,检查实体字段值是否在请求集合中
/// 等同于 <![CDATA[value != null && value.Count > 0]]>
/// </summary>
LeftAny,
/// <summary>
/// 验证数组不为 null 且包含至少一个元素,用于包含查询(右侧包含关系)
/// 适用于 <see cref="System.Array"/> 和集合类型
/// 配合 <see cref="Comparison.Contains"/> 使用时,生成:<![CDATA[entity.Collection.Contains(conditionValue)]]>
/// 意义:实体字段是集合,条件值是单值,检查实体集合是否包含指定值
/// 等同于 <![CDATA[value != null && value.Length > 0]]>
/// </summary>
RightAny,
/// <summary>
/// 验证值等于指定的比较值
/// 适用于所有可比较的类型
/// 等同于 <![CDATA[value == comparisonValue]]>
/// </summary>
EqualValue,
/// <summary>
/// 验证值不等于指定的比较值
/// 适用于所有可比较的类型
/// 等同于 <![CDATA[value != comparisonValue]]>
/// </summary>
NotEqualValue,
/// <summary>
/// 验证值大于指定的比较值
/// 适用于实现了 IComparable 接口的类型
/// 等同于 <![CDATA[value > comparisonValue]]>
/// </summary>
GtValue,
/// <summary>
/// 验证值小于指定的比较值
/// 适用于实现了 IComparable 接口的类型
/// 等同于 <![CDATA[value < comparisonValue]]>
/// </summary>
LtValue,
/// <summary>
/// 验证值大于或等于指定的比较值
/// 适用于实现了 IComparable 接口的类型
/// 等同于 <![CDATA[value >= comparisonValue]]>
/// </summary>
GtOrEqualValue,
/// <summary>
/// 验证值小于或等于指定的比较值
/// 适用于实现了 IComparable 接口的类型
/// 等同于 <![CDATA[value <= comparisonValue]]>
/// </summary>
LtOrEqualValue,
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这是一个用于表达式树查询的枚举定义,属于 Dpz.Core.Entity.Base.ExpressTreeQuery 命名空间。该枚举定义了在动态生成查询表达式时可以使用的各种过滤条件。
主要功能
这个 FilterCondition 枚举主要用于:
- 参数验证:在生成表达式树之前验证请求参数的有效性
- 条件筛选:定义不同类型的数据应该如何进行条件判断
- 表达式生成:为动态查询提供标准化的过滤条件
枚举值分类
空值检查类
NotNull:检查值不为 nullNotNullOrEmpty:检查字符串不为 null 且不为空NotNullOrWhiteSpace:检查字符串不为 null 且不为空白字符
集合操作类
LeftAny:用于 IN 查询,检查集合不为空且有元素- 例:
request.UserIds.Contains(entity.UserId)
- 例:
RightAny:用于包含查询,检查数组/集合不为空- 例:
entity.Tags.Contains(searchTag)
- 例:
比较操作类
EqualValue:等于比较 (==)NotEqualValue:不等于比较 (!=)GtValue:大于比较 (>)LtValue:小于比较 (<)GtOrEqualValue:大于等于比较 (>=)LtOrEqualValue:小于等于比较 (<=)
使用场景
这个枚举通常配合属性或方法使用,用于:
// 示例用法(假设)
[QueryFilter(FilterCondition.NotNullOrEmpty)]
public string Name { get; set; }
[QueryFilter(FilterCondition.LeftAny)]
public List<int> CategoryIds { get; set; }
[QueryFilter(FilterCondition.GtOrEqualValue)]
public DateTime? StartDate { get; set; }
通过这种方式,可以在运行时根据这些条件动态生成相应的 LINQ 表达式,实现灵活的查询功能,同时保证参数的有效性验证。
AI 正在分析代码…
评论加载中...