LINQ动态组合查询

简介:

最近在项目中用到了LINQ,在界面上有许多组合查询条件,我是一个比较懒的人,呵呵,不想在数据查询层写许多方法。我自己尝试写了个ExpressionLINQ动态查询,目的是到达了,但是我在代码的初始表达式为null,每次组合AND前都要判断是否为空,为空则返回右边的表达式。今天在网上Google了一下,看到肖坤Linq动态查询与模糊查询(带源码示例)讲到的《dynamic linq queries / dynamic where clause (part 2) 》,中老外写的PredicateExtensions类。便用这个类修改了下自己的方案。不在是全表达式树动态生成了。今天特地写了一个基于NorthwindDemo拿来和大家分享:

效果贴图:

      界面是用Telerik控件做的(控件对于我们后台开发人员来说就是少调样式)。

代码:

 

代码

 

 

其中其实很简单,主要方法就两个,一个事表达式树组合,和数据绑定。数据绑定,有一个

Expression<Func<Orders, bool>> where查询条件。

ControllerCode


 
 
代码

 

我的排序辅助类:

 
 
代码

 

老外的PredicateExtensions类很简单,只是真的思路很优秀,看到代码我们都会恍然大悟,
但是估计我这鼠辈很难想到。

 
 
代码

 

上面贴图条件输出框中输出的sql我也截了一个图来供参考:

sql看不全:故在这里也贴一个:

 
 
代码

 

在这里说老外的思想优秀,该讲解一下,但是限于篇幅,还有时间凌晨1点了,故改到下回讲解。
附带:

本随笔代码下载


本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2010/08/02/1790166.html,如需转载请自行联系原作者

目录
相关文章
|
存储 运维 监控
值得收藏的常用DELL OpenManage Server Administrator (OMSA) 的命令列表
DELL OpenManage Server Administrator (OMSA) 提供了一套全面的命令行工具,用于戴尔服务器的硬件监控、配置和故障排查。
912 0
放大电路与频率特征(期末模电速成)
放大电路与频率特征(期末模电速成)
241 1
|
XML JSON 数据格式
No converter found for return value of type: class java.util.ArrayList错误问题
No converter found for return value of type: class java.util.ArrayList错误问题
No converter found for return value of type: class java.util.ArrayList错误问题
|
9天前
|
数据采集 人工智能 安全
|
4天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
301 164
|
3天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
315 155