根据表达式树动态生成Lambda表达式
Posted 无心YQ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据表达式树动态生成Lambda表达式相关的知识,希望对你有一定的参考价值。
1.准备
- 环境:Asp.Net MVC5 、EF6
- 前置知识:反射、使用过EF编写过Lambda表达式
2.基础类库
2.1该高级条件的类型
1 /// <summary> 2 /// 当前条件所属类型 3 /// </summary> 4 public enum Em_AS_ConditionType 5 { 6 /// <summary> 7 /// 并 8 /// </summary> 9 [Description("并")] 10 And = 0, 11 12 /// <summary> 13 /// 或 14 /// </summary> 15 [Description("或")] 16 Or = 1 17 }
2.2搜索条件
1 /// <summary> 2 /// 高级搜索条件 3 /// </summary> 4 public enum Em_AS_Condition 5 { 6 /// <summary> 7 /// 包含 8 /// </summary> 9 [Description("包含")] 10 Include = 0, 11 12 /// <summary> 13 /// 等于 14 /// </summary> 15 [Description("=")] 16 Equal = 1, 17 18 /// <summary> 19 /// 大于等于 20 /// </summary> 21 [Description(">=")] 22 GtEqual = 2, 23 24 /// <summary> 25 /// 大于 26 /// </summary> 27 [Description(">")] 28 Gt = 3, 29 30 /// <summary> 31 /// 小于等于 32 /// </summary> 33 [Description("<=")] 34 LtEqual = 4, 35 36 /// <summary> 37 /// 小于 38 /// </summary> 39 [Description("<")] 40 Lt = 5, 41 }
2.3前端传来的数据模型格式
/// <summary> /// 高级查询 /// </summary>public class QM_Adv { /// <summary> /// 属性名称 /// </summary>public string PropName { get; set; } /// <summary> /// 条件 /// </summary>public Em_AS_Condition Condition { get; set; } /// <summary> /// 关键字 /// </summary>public string Keyword { get; set; } /// <summary> /// 这组条件与其它条件的关系 /// </summary>public Em_AS_ConditionType ConditionType { get; set; } }
3.准备好基础类库,然后就可以编写表达式树生成Lambda的代码了
以上是关于根据表达式树动态生成Lambda表达式的主要内容,如果未能解决你的问题,请参考以下文章
基于Expression Lambda表达式树的通用复杂动态查询构建器——《剧透一下》