在业务开发中,一个常用的功能就是“高级查询”,就是客户可以根据自己的需要设置查询条件查找数据,类似下图:

通常,我们需要为每个“高级查询”定制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 IEnumerable<WeatherForecast> 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“

一秒创建高级查询服务相关推荐

  1. 使用Dynamic LINQ创建高级查询服务

    前言 在以前的文章中,我们介绍了使用AutoFilterer.Generators创建高级查询服务. 但是,AutoFilterer.Generators只能提供简单的范围筛选: 今天,我们介绍如何使 ...

  2. 解答网友提问:如何构建动态表达式实现高级查询服务

    上次我们介绍了"一秒创建高级查询服务".前天,有网友在公众号后台问我,怎么使用动态表达式: 我想应该是客户提出了更高的要求,查询的条件不仅限于大于.小于,更加多样化,需要动态组合成 ...

  3. 【阿里内部应用】基于Blink为新商业调控打造实时大数据交互查询服务

    基于Blink为新商业调控打造实时大数据交互查询服务 案例与解决方案汇总页: 阿里云实时计算产品案例&解决方案汇总 从IT到DT.从电商到新商业,阿里巴巴的每个细胞都存在大数据的DNA,如何挖 ...

  4. 【javaWeb微服务架构项目——乐优商城day07】——Elasticsearch介绍和安装及使用(安装kibana,安装ik分词器,Spring Data Elasticsearch,高级查询)

    文章目录 0.学习目标 1.Elasticsearch介绍和安装 1.1.简介 1.1.1.Elastic 1.1.2.Elasticsearch 1.1.3.版本 1.2.安装和配置 1.2.1.新 ...

  5. Uber如何使用go语言创建高效的查询服务

    在2015年初我们创建了一个微服务,它只做一件事(也确实做得很好)就是地理围栏查询.一年后它成了Uber高频查询(QPS)服务,本次要讲的故事就是我们为什么创建这个服务,以及编程语言新秀Go如何帮我们 ...

  6. 微服务项目之电商--19.ElasticSearch基本、高级查询和 过滤、结果过滤、 排序和聚合aggregations

    接上一篇 目录 3.查询 3.1.基本查询: 3.1.1 查询所有(match_all) 3.1.2 匹配查询(match) 3.1.3 多字段查询(multi_match) 3.1.4 词条匹配(t ...

  7. 动态创建Lambda表达式实现高级查询

    需求简介 最近这几天做的东西总算是回归咱的老本行了,给投资管理项目做一个台账的东西,就是类似我们的报表.其 中有一个功能是一个高级查询的需求,在查询条件方面大概有7.8个查询条件.需求就是如果一个条件 ...

  8. SQL Server T-SQL高级查询

    高级查询在数据库中用得是最频繁的,也是应用最广泛的. Ø 基本常用查询 --select select * from student; --all 查询所有 select all sex from s ...

  9. 【SQL Server】数据库开发指南(五)T-SQL 高级查询综合应用与实战

    本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中. 本系列文章列表如下: [SQL Server] Linux 运维下对 SQL Server 进行安装.升级.回滚.卸载操作 [ ...

最新文章

  1. Entrust - Laravel 用户权限系统解决方案
  2. 盛大 Everbox同步网盘,可以本地和云服务文件同步,还不错,推荐下面的注册地址...
  3. 口语学习Day4:今天带你们一起逛一下博物馆
  4. 憋不住的心里的一个想法,JVM的BYTECODE是完全平台无关的么?
  5. alert文件位置 oracle,Oracle11gAlertlog文件位置的问题
  6. java占位符填充_Java使用freemark生成word
  7. 【今日CS 视觉论文速览】4 Jan 2019
  8. clion IDEA 2019 Activation Code
  9. AT1219 歴史の研究 解题报告
  10. Unity动画系统详解5:BlendTree混合树是什么?
  11. 动态规划—最长公共子序列LCS及模板
  12. 链栈判断回文 java_C语言链栈判断回文
  13. git 小乌龟 推送代码到gitee
  14. window操作系统安装教程(PE辅助)
  15. 第4章 网络信息资源检索
  16. 基于数字孪生的智慧城市
  17. 《项目管理问题分析与解决方案小册》(持续更新中)
  18. open failed: EACCES (Permission denied)权限已加,写入sd卡仍报错的解决办法
  19. python算法--物流最优路径
  20. 电脑蓝屏后自动重启问题

热门文章

  1. 报表系统FineReport通过权限控制数据访问方案
  2. 搭建nginx + python + django +memcached+ mysql +fastcgi 环境
  3. unreal无损音乐百度云_将网易云音乐专用的无损音乐格式转换成全平台通用的无损格式...
  4. POJ2676,HDU4069解决数独的两种实现:DFS、DLX
  5. 产品需求文档 PRD
  6. ASP.NET2.0_多语言本地化应用程序
  7. configure 查找依赖库_Rust在编译Android的库时,如何设定依赖的第三方库引用的C/C++的动态库的搜索路径?...
  8. jQuery杂项进阶(四)
  9. 0 重新学习Ubuntu -- 这一段没怎么学习
  10. 你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看)