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

本文探讨了分层架构中的条件过滤技术,介绍了WEBUI、BLL及DATA层的职责划分,利用Lambda表达式简化查询语句,并展示了如何通过字典统一过滤条件,最终实现灵活且高效的查询功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

在这个系列中,我将为大家解说一下分层架构里的条件过滤,如何去设计它,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层:这个层还是返回最单纯的数据集,条件过滤不会去影响这个层

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值