一秒创建高级查询服务
在业务开发中,一个常用的功能就是“高级查询”,就是客户可以根据自己的需要设置查询条件查找数据,类似下图:
通常,我们需要为每个“高级查询”定制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“
一秒创建高级查询服务相关推荐
- 使用Dynamic LINQ创建高级查询服务
前言 在以前的文章中,我们介绍了使用AutoFilterer.Generators创建高级查询服务. 但是,AutoFilterer.Generators只能提供简单的范围筛选: 今天,我们介绍如何使 ...
- 解答网友提问:如何构建动态表达式实现高级查询服务
上次我们介绍了"一秒创建高级查询服务".前天,有网友在公众号后台问我,怎么使用动态表达式: 我想应该是客户提出了更高的要求,查询的条件不仅限于大于.小于,更加多样化,需要动态组合成 ...
- 【阿里内部应用】基于Blink为新商业调控打造实时大数据交互查询服务
基于Blink为新商业调控打造实时大数据交互查询服务 案例与解决方案汇总页: 阿里云实时计算产品案例&解决方案汇总 从IT到DT.从电商到新商业,阿里巴巴的每个细胞都存在大数据的DNA,如何挖 ...
- 【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.新 ...
- Uber如何使用go语言创建高效的查询服务
在2015年初我们创建了一个微服务,它只做一件事(也确实做得很好)就是地理围栏查询.一年后它成了Uber高频查询(QPS)服务,本次要讲的故事就是我们为什么创建这个服务,以及编程语言新秀Go如何帮我们 ...
- 微服务项目之电商--19.ElasticSearch基本、高级查询和 过滤、结果过滤、 排序和聚合aggregations
接上一篇 目录 3.查询 3.1.基本查询: 3.1.1 查询所有(match_all) 3.1.2 匹配查询(match) 3.1.3 多字段查询(multi_match) 3.1.4 词条匹配(t ...
- 动态创建Lambda表达式实现高级查询
需求简介 最近这几天做的东西总算是回归咱的老本行了,给投资管理项目做一个台账的东西,就是类似我们的报表.其 中有一个功能是一个高级查询的需求,在查询条件方面大概有7.8个查询条件.需求就是如果一个条件 ...
- SQL Server T-SQL高级查询
高级查询在数据库中用得是最频繁的,也是应用最广泛的. Ø 基本常用查询 --select select * from student; --all 查询所有 select all sex from s ...
- 【SQL Server】数据库开发指南(五)T-SQL 高级查询综合应用与实战
本系列博文还在更新中,收录在专栏:#MS-SQL Server 专栏中. 本系列文章列表如下: [SQL Server] Linux 运维下对 SQL Server 进行安装.升级.回滚.卸载操作 [ ...
最新文章
- Entrust - Laravel 用户权限系统解决方案
- 盛大 Everbox同步网盘,可以本地和云服务文件同步,还不错,推荐下面的注册地址...
- 口语学习Day4:今天带你们一起逛一下博物馆
- 憋不住的心里的一个想法,JVM的BYTECODE是完全平台无关的么?
- alert文件位置 oracle,Oracle11gAlertlog文件位置的问题
- java占位符填充_Java使用freemark生成word
- 【今日CS 视觉论文速览】4 Jan 2019
- clion IDEA 2019 Activation Code
- AT1219 歴史の研究 解题报告
- Unity动画系统详解5:BlendTree混合树是什么?
- 动态规划—最长公共子序列LCS及模板
- 链栈判断回文 java_C语言链栈判断回文
- git 小乌龟 推送代码到gitee
- window操作系统安装教程(PE辅助)
- 第4章 网络信息资源检索
- 基于数字孪生的智慧城市
- 《项目管理问题分析与解决方案小册》(持续更新中)
- open failed: EACCES (Permission denied)权限已加,写入sd卡仍报错的解决办法
- python算法--物流最优路径
- 电脑蓝屏后自动重启问题
热门文章
- 报表系统FineReport通过权限控制数据访问方案
- 搭建nginx + python + django +memcached+ mysql +fastcgi 环境
- unreal无损音乐百度云_将网易云音乐专用的无损音乐格式转换成全平台通用的无损格式...
- POJ2676,HDU4069解决数独的两种实现:DFS、DLX
- 产品需求文档 PRD
- ASP.NET2.0_多语言本地化应用程序
- configure 查找依赖库_Rust在编译Android的库时,如何设定依赖的第三方库引用的C/C++的动态库的搜索路径?...
- jQuery杂项进阶(四)
- 0 重新学习Ubuntu -- 这一段没怎么学习
- 你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看)