Appearance
查询表达式过滤
方式一:构建过滤表达式
c#
[HttpGet("expression")]
public async Task<object> TestFilterExpression(string functionName, int shopId)
{
var query = _basicEmployeeFunctionService.Entities
.BuildFilterExpression(nameof(BasicEmployeeFunction.FunctionName), functionName)
.BuildFilterExpression(nameof(BasicEmployeeFunction.ShopId), shopId);
return query.ToList();
}方式二:构建表达式工厂
c#
[HttpGet("expression2")]
public async Task<object> TestFilterExpression2()
{
var factory = FilterExpressionFactory<BasicEmployeeFunction>.Create()
.Build(nameof(BasicEmployeeFunction.FunctionName), "小程序")
.Build(nameof(BasicEmployeeFunction.ShopId), 3157);
var query = _basicEmployeeFunctionService.Entities.Where(factory.ToLambdaExpression());
return query.ToList();
}方式三:构建表达式对象
c#
[HttpGet("expression3")]
public async Task<object> TestFilterExpression3([FromQuery] TestExpressionInput input)
{
var factory = FilterExpressionFactory<BasicEmployeeFunction>.Create().Build(input);
var query = _basicEmployeeFunctionService.Entities.Where(factory.ToLambdaExpression());
return query.ToPageCallResult(input.Page - 1, input.Limit);
}
// 或者
[HttpGet("list2")]
public async Task<PageCallResult<SysConditionBase>> GetListAsync([FromQuery] SysConditionListInput input) =>
await _sysConditionService.GetDefaultQuery()
.BuildFilterExpression(input)
.ToPageCallResultAsync(input.Page - 1, input.Limit);
// input定义,内含查询规则
public class TestExpressionInput : PageQueryInput
{
// 查询字段,并携带规则
[FilterField(MatchRules = MatchRules.Like)]
public string FunctionName { get; set; } = string.Empty;
// 普通查询字段(不定义属性时默认为查询字段)
public int? ChainId { get; set; }
// 普通查询字段
[FilterField]
public int? ShopId { get; set; }
// 不映射为查询字段
[NotFilterField]
public int XXXX { get; set; }
}条件配置
input定义查询规则,例如:
c#
/// <summary>
/// 获取数据归档实例
/// </summary>
public class GetDataArchivingInstancesInput : PageQueryInput
{
/// <summary>
///
/// </summary>
public GetDataArchivingInstancesInput()
{
SortField = nameof(DataArchivingInstance.CreateTime);
SortType = "desc";
}
/// <summary>
/// 连接名
/// </summary>
[FilterField(MatchRules = MatchRules.Like)]
public string? ConnectionName { get; set; }
/// <summary>
/// 数据名
/// </summary>
[FilterField(MatchRules = MatchRules.Like)]
public string? DatabaseName { get; set; }
/// <summary>
/// 最小创建时间
/// </summary>
[FilterField(MatchRules = MatchRules.Ge)]
public DateTime? MinCreateTime { get; set; }
/// <summary>
/// 最小创建时间
/// </summary>
[FilterField(MatchRules = MatchRules.Le)]
public DateTime? MaxCreateTime { get; set; }
}模糊
c#
[FilterField(MatchRules = MatchRules.Like)]等于
c#
[FilterField(MatchRules = MatchRules.Eq)]大于等于
c#
[FilterField(MatchRules = MatchRules.Ge)]小于等于
c#
[FilterField(MatchRules = MatchRules.Le)]大于
c#
[FilterField(MatchRules = MatchRules.Gt)]小于
c#
[FilterField(MatchRules = MatchRules.Lt)]不等于
c#
[FilterField(MatchRules = MatchRules.Nq)]以...开头
c#
[FilterField(MatchRules = MatchRules.StartsWith)]以...结束
c#
[FilterField(MatchRules = MatchRules.EndsWith)]包含
c#
[FilterField(MatchRules = MatchRules.In)]