重庆建设车业官方网站,珠宝首饰商城网站建设,养殖业网站模板,深圳企业排行在业务开发中#xff0c;一个常用的功能就是“高级查询”#xff0c;就是客户可以根据自己的需要设置查询条件查找数据#xff0c;类似下图#xff1a; 通常#xff0c;我们需要为每个“高级查询”定制Dto类#xff0c;用于传输条件#xff0c;并要根据条件组合成查询语… 在业务开发中一个常用的功能就是“高级查询”就是客户可以根据自己的需要设置查询条件查找数据类似下图 通常我们需要为每个“高级查询”定制Dto类用于传输条件并要根据条件组合成查询语句执行数据库查询操作费时费力。现在使用AutoFilterer.Generators可以轻松实现上述功能。Demo创建Asp.Net Core Web API项目引用Nuget包AutoFilterer.Generators。在WeatherForecast类上添加GenerateAutoFilterAttribute:[GenerateAutoFilter]
public class WeatherForecast
{public DateTime Date { get; set; }public int TemperatureC { get; set; }public int TemperatureF 32 (int)(TemperatureC / 0.5556);public string Summary { get; set; }
}
然后修改WeatherForecastController.cs的Get方法增加WeatherForecastFilter参数[HttpGet]
public IEnumerableWeatherForecast Get([FromQuery]WeatherForecastFilter filter)
{var rng new Random();// Change range to 100 from 5 to get more reasonable results.return Enumerable.Range(1, 100).Select(index new WeatherForecast{Date DateTime.Now.AddDays(index),TemperatureC rng.Next(-20, 55),Summary Summaries[rng.Next(Summaries.Length)]}).AsQueryable().ApplyFilter(filter)//使用filter.ToArray();
}
AutoFilterer.Generators提供了IQueryable.ApplyFilter(filter)扩展方法可以根据高级查询条件进行数据筛选。运行程序可以在Swagger UI看到如下图: 现在“高级查询”服务已经完成了。你可以传入最小最大值范围排序方式分页方式。结论AutoFilterer.Generators提供了很便利的方式实现“高级查询”如果大家有类似的业务需求赶快试用一下吧。欢迎关注我的个人公众号”My IO“