分层中的~条件过滤~每个层对于“条件过滤”的职责

简介:

在分层架构中,查询操作是很常见的,我们有时总是希望把它写得健壮一些,有时总希望重复代码少一些,可能有时也希望它可以美丽一些,呵呵!

在这个系列中,我将为大家解说一下分层架构里的条件过滤,如何去设计它,WEB,BLL,DATA层都干什么事,怎么样使程序更加灵活,更加合理些。

目录:

一  每个层对于“条件过滤”的职责

二  Lambda表达式对于查询语句简化了不少,牺牲的性能可以接受

三  将所有过滤条件放到字典里,最后统一过滤

四  为Iqueryable结果集添加扩展方法,并添加排序功能

五  模块完整代码

 

一  每个层对于“条件过滤”的职责

WEB UI 层:整理查询的对象,并进行初始化工作,组织PredicateList对象(我的条件过滤器),代码可能是这样:

1   PredicateList<User> predicateList = new PredicateList<User>();
2   predicateList.Add(i => i.ID > 1);

BLL 层:根据某种条件去调用LinqForPredicate方法,并完成对结果集的过滤,代码可能是这样:

1             IQueryable<User> linq = arr.AsQueryable();
2             if (sortBy == 0)
3                 linq = linq.LinqForPredicate<User>(predicateList, i => i.Asc(j => j.ID));
4             else
5                 linq = linq.LinqForPredicate<User>(predicateList, i => i.Desc(j => j.ID));

DATA层:这个层还是返回最单纯的数据集,条件过滤不会去影响这个层

最后,在页面上可能会是这样的结果:

有时,我们可能在为一个功能思前想后

本文转自博客园张占岭(仓储大叔)的博客,原文链接:分层中的~条件过滤~每个层对于“条件过滤”的职责,如需转载请自行联系原博主。

目录
相关文章
|
4月前
|
编译器 C语言
关系/条件/逻辑~操作符
关系/条件/逻辑~操作符
|
6月前
|
搜索推荐
过滤概念(可行性分析)
过滤概念(可行性分析)
|
2月前
|
人工智能 Python
条件过滤检索
向量检索服务DashVector支持条件过滤和向量相似性检索相结合,在精确满足过滤条件的前提下进行高效的向量检索。
|
2月前
动态范围匹配逻辑实现
动态范围匹配逻辑实现
11 0
|
4月前
|
SQL 分布式计算 算法
当两个表进行Join操作时,如果它们的数据不符合MapJoin规范,您可以尝试以下优化方案
当两个表进行Join操作时,如果它们的数据不符合MapJoin规范,您可以尝试以下优化方案
43 4
|
10月前
|
索引
子查询和在业务逻辑上顺序查询有多大区别
子查询和在业务逻辑上顺序查询有多大区别
46 0
|
移动开发 JavaScript 算法
如何实现动态内容条件筛选
这两天看了一下后端给的接口文档,每一个都要求筛选,而且这个筛选还是多条件的,还是不能固定的,要求根据用户的输入然后筛选,我之前的实现大概是这样子,当用户想要筛选的时候就去检索条件,并输入相关的内容进行筛选
|
SQL 关系型数据库 MySQL
ES中如何实现类似having的先聚合再过滤查询
ES中如何实现类似having的先聚合再过滤查询
415 0
ES中如何实现类似having的先聚合再过滤查询
|
Python
一日一技:如何对数据进行过滤
一日一技:如何对数据进行过滤
336 0
一日一技:如何对数据进行过滤
|
存储 自然语言处理 监控
数据加工DSL编译优化:公共子表达式删除
本次分享主要介绍面向数据加工DSL的一项编译优化:公共子表达式删除(common subexpression elimination)。SLS数据加工服务是什么?公共子表达式删除的初衷?公共子表达式删除是怎么实现的?有哪些实际价值?SLS数据加工服务是什么?日志服务提供可托管、可扩展、高可用的数据加工服务。数据加工服务可用于数据的规整、富化、流转、脱敏和过滤。数据加工DSL提供了30多种场景方案、