一秒创建高级查询服务
在業(yè)務開發(fā)中,一個常用的功能就是“高級查詢”,就是客戶可以根據(jù)自己的需要設置查詢條件查找數(shù)據(jù),類似下圖:?
通常,我們需要為每個“高級查詢”定制Dto類,用于傳輸條件,并要根據(jù)條件組合成查詢語句執(zhí)行數(shù)據(jù)庫查詢操作,費時費力。
現(xiàn)在,使用AutoFilterer.Generators可以輕松實現(xiàn)上述功能。
Demo
創(chuàng)建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參數(shù):
[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)擴展方法,可以根據(jù)高級查詢條件進行數(shù)據(jù)篩選。
運行程序,可以在Swagger UI看到如下圖:?
現(xiàn)在,“高級查詢”服務已經(jīng)完成了。你可以傳入最小最大值范圍,排序方式,分頁方式。
結(jié)論
AutoFilterer.Generators提供了很便利的方式實現(xiàn)“高級查詢”,如果大家有類似的業(yè)務需求,趕快試用一下吧。
歡迎關(guān)注我的個人公眾號”My IO“
總結(jié)
以上是生活随笔為你收集整理的一秒创建高级查询服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 容器环境下创建应用 dump
- 下一篇: WPF实现环(圆)形进度条