需求
显示的列
Columns。
查询面板的查询参数
SearchArguments。
动态查询(允许用户自定义各种查询)
DynamicFilterGroup。
排序
Sorters。
分页信息
Page。
ItemsPerPage。
示例代码
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 using Happy.Query; 8 using Happy.Query.Filters; 9 10 namespace Happy.Application.Query11 {12 ///13 /// 查询请求。14 /// 15 public sealed class QueryRequest16 {17 ///18 /// 显式的列。19 /// 20 public ListColumns { get; set; }21 22 /// 23 /// 查询参数。24 /// 25 public SearchArgument[] Arguments { get; set; }26 27 ///28 /// 高级查询。29 /// 30 public DynamicFilterGroup Group { get; set; }31 32 ///33 /// 排序器。34 /// 35 public Sorter[] Sorters { get; set; }36 37 ///38 /// 页码。39 /// 40 public long Page { get; set; }41 42 ///43 /// 每页显式的记录数。44 /// 45 public long ItemsPerPage { get; set; }46 47 internal QueryArgument ToQueryArgument(FilterDefinition filterDefinition)48 {49 var queryArgument = new QueryArgument();50 queryArgument.Columns = this.Columns;51 queryArgument.OrderClause = this.Sorters.ToOrderClause();52 53 var whereClauses = new List{ this.Group.ToWhereClause() };54 if (filterDefinition != null)55 {56 whereClauses.Add(filterDefinition.BuildWhereClause(this.Arguments.ToArguments()));57 }58 queryArgument.WhereClauses = whereClauses;59 60 return queryArgument;61 }62 }63 }
备注
因为这些参数都是由客户端传递而来的,是不能信任的,而且所有的查询条件也不能完全依赖客户端,一些查询逻辑一定要由服务器生成,如:数据权限、业务逻辑。