Repository 简化实现多条件查询
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,Repository 在做查询的时候,如果查询条件多的话,linq查询表达式会写的很复杂,比如:public IQueryable Get(int id, string name, string ad
千家信息网最后更新 2025年01月20日Repository 简化实现多条件查询
Repository 在做查询的时候,如果查询条件多的话,linq
查询表达式会写的很复杂,比如:
public IQueryableGet(int id, string name, string address, Status? status, DateTime createTime){ var query = _entities; if(id != 0) { query = query.where(x => x.Id == id); } if(!string.IsNullOrWhiteSpace(name)) { query = query.where(x => x.Name.Contains(name)); } if(!string.IsNullOrWhiteSpace(address)) { query = query.where(x => x.Address.Contains(address)); } if(status.HasValue) { query = query.where(x => x.Status == status.Value); } if(createTime != null) { query = query.where(x => x.CreateTime == createTime); } // ... return query;}
可以看到,查询条件多的话,我们会写很多的if
判断,代码看起来很不美观,解决方式使用Expression
,示例代码:
using System.Linq.Expressions;public IQueryableGet(int id, string name, string address, Status? status, DateTime createTime){ Expression > studentFunc = x => (id == 0 || x.Id == id) && (string.IsNullOrWhiteSpace(name) || x.Name.Contains(name)) && (string.IsNullOrWhiteSpace(address) || x.Address.Contains(address)) && (!status.HasValue || x.Status == status.Value) && (createTime == null || x.CreateTime <= createTime); return _entities.Where(studentFunc);}
生成示例sql
代码:
SELECT `x`.`id`, `x`.`name`, `x`.`address`, `x`.`status`, `x`.`create_time`FROM `students` AS `x`WHERE (`x`.`id` = 2)AND (`x`.`status` = 0) AND (`x`.`create_time` == '2017-04-25T16:24:29.769+08:00'))
查询
代码
条件
示例
复杂
美观
方式
时候
表达式
生成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
云平台数据库安全
在关系数据库中事务是什么
网络安全24小时
幻灯片模板软件开发
兰州公安2021网络安全宣传
sql数据库小程序登录密码找回
服务器采购申请
沈阳软件开发6年后工资
河海毕业论文查重数据库
仓储管理系统数据库分工
node 可以做数据库吗
软件开发就业环境
linux网络安全app
ln2服务器
网络技术对应什么专业
网络安全甘肃论坛
网络安全实验报告格式
西部网络安全中心
属于手机的软件开发平台
同筑网络安全共享网络文明手抄报
河南中磐网络技术有限公司
国泰安数据库查资产负债表
qt链接sql数据库文件
怀旧服可以直接换服务器吗
软件开发相关的案例故事
网络安全素养知识竞赛
软件开发各阶段的时间比例
网络安全认证 有什么证
深圳市五居互联网科技有限公司
sql2012数据库书籍