分层中的~条件过滤~每个层对于“条件过滤”的职责
在分层架构中,查询操作是很常见的,我们有时总是希望把它写得健壮一些,有时总希望重复代码少一些,可能有时也希望它可以美丽一些,呵呵!
在这个系列中,我将为大家解说一下分层架构里的条件过滤,如何去设计它,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层:这个层还是返回最单纯的数据集,条件过滤不会去影响这个层
最后,在页面上可能会是这样的结果:
有时,我们可能在为一个功能思前想后
分类:
其它 / 面向对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示