.NET技术-6.0. Expression 表达式树 生成 Lambda

  1. public static event Func<Student, bool> myevent;
  2. public delegate void del(int i, int j);
  3. static void Main(string[] args)
  4. {
  5.  
  6. var students = new List<Student> {
  7. new Student(){ Id=, Age=, Name="张三1", Sex=true , GradeId=},
  8. new Student(){ Id=, Age=, Name="李四1", Sex= false , GradeId=},
  9. new Student(){ Id=, Age=, Name="王二", Sex= false , GradeId=},
  10. new Student(){ Id=, Age=, Name="赵六", Sex=true , GradeId=},
  11.  
  12. };
  13.  
  14. // BookShopPlus2Entities db = new BookShopPlus2Entities();
  15. //AsNoTracking查询的对象不要放在对象池中
  16. //特别说明:对于使用AsNoTracking()的数据不能用于修改。
  17. //List<Book> db = bsc.Books.AsNoTracking().ToList();
  18.  
  19. //del mydel = new del(add);
  20. //mydel.Invoke(1, 9);
  21. //// //匿名方法
  22. //mydel += delegate(int h, int m)
  23. //{
  24.  
  25. //};
  26. ////Lamda表达式
  27. //mydel += (a, b) =>
  28. //{
  29. // Console.WriteLine(a + b);
  30. //};
  31.  
  32. //生成 1==1
  33. Expression expwhere = Expression.Equal(Expression.Constant(), Expression.Constant());
  34. //生成 s=>
  35. ParameterExpression exps = Expression.Parameter(typeof(Student), "s");
  36. //生成s.Age>12
  37. Expression exp1 = Expression.GreaterThan(Expression.Property(exps, "Age"), Expression.Constant());
  38. //生成s.Age<22
  39. Expression exp2 = Expression.LessThan(Expression.Property(exps, "Age"), Expression.Constant());
  40. //生成 s.Age>12 and s.Age<22 或连接 Expression.Or and 连接 Expression.And
  41. Expression exp3 = Expression.And(exp1, exp2);
  42. //Expression<Func<Student, bool>> lamband = Expression.Lambda < Func<Student, bool>.Combine();
  43. //生成s=>Age>12 AND s.Age<22
  44. Expression<Func<Student, bool>> lamband =
  45. Expression.Lambda<Func<Student, bool>>(exp3, exps);
  46. var s = students.Where(lamband.Compile()).ToList();
  47. }
  48.  
  49. }
  50. public class Student
  51. {
  52. public int Id { get; set; } //学号
  53. public string Name { get; set; } //学员姓名
  54. public int Age { get; set; } //学生年龄
  55. public bool Sex { get; set; } //学生性别
  56. public int GradeId { get; set; }
  57. }

引用:https://www.cnblogs.com/wlzhang/p/7690630.html

.NET技术-6.0. Expression 表达式树 生成 Lambda的更多相关文章

  1. .net 系列:Expression表达式树、lambda、匿名委托 的使用

    首先定义一个泛型委托类型,如下: public delegate T Function<T>(T a, T b); 实现泛型委托的主体代码,并调用: public static strin ...

  2. .net 系列:Expression表达式树、lambda、匿名委托 的使用【转】

    https://www.cnblogs.com/nicholashjh/p/7928205.html 首先定义一个泛型委托类型,如下: public delegate T Function<T& ...

  3. 介绍一个可以将Expression表达式树解析成Transact-SQL的项目Expression2Sql

    一.Expression2Sql介绍 Expression2Sql是一个可以将Expression表达式树解析成Transact-SQL的项目.简单易用,几分钟即可上手使用,因为博主在设计Expres ...

  4. 委托、匿名委托、Lambda 表达式、Expression表达式树之刨根问底

    本篇不是对标题所述之概念的入门文章,重点在阐述它们的异同点和应用场景.各位看官,这里就不啰嗦了,直接上代码. 首先定义一个泛型委托类型,如下: public delegate T Function&l ...

  5. Expression表达式树(C#)

    Lambda表达式: 1.下面举例通过Lambda表达式创建了一个用于验证Name的Func委托. //通过Lambda表达式创建一个对象的Name属性验证委托 Func<SearchInfo, ...

  6. C#在泛型类中,通过表达式树构造lambda表达式

    场景 最近对爬虫的数据库架构做调整,需要将数据迁移到MongoDB上去,需要重新实现一个针对MongoDB的Dao泛型类,好吧,动手开工,当实现删除操作的时候问题来了. 我们的删除操作定义如下:voi ...

  7. 关于Expression表达式树的拼接

    最近在做项目中遇到一个问题,需求是这样的: 我要对已经存在的用户进行检索,可以根据用户的id 或者用户名其中的一部分字符来检索出来,这样就出现了三种情况 只有id,只有用户名中一部字符,或者全部都有. ...

  8. Expression表达式树

    表达式树表示树状数据结构的代码,树状结构中的每个节点都是一个表达式,例如一个方法调用或类似 x < y 的二元运算 1.利用 Lambda 表达式创建表达式树 Expression<Fun ...

  9. Expression 表达式树学习整理

    整理了一下表达式树的一些东西,入门足够了 先从ConstantExpression 开始一步一步的来吧  它表示具有常量值的表达式 我们选建一个控制台应用程序 ConstantExpression _ ...

随机推荐

  1. 计算机是如何计算的、运行时栈帧分析(神奇i++续)

    关于i++的疑问 通过JVM javap -c 查看字节码执行步骤了解了i++之后,衍生了一个问题: int num1=50; num1++*2执行的是imul(将栈顶两int类型数相乘,结果入栈), ...

  2. maven知识结构笔记

    1.什么是maven Maven 翻译为"专家"."内行",是 Apache 下的一个纯 Java 开发的开源项目.基于项目对象模型(缩写:POM)概念,Mav ...

  3. 056、Java中continue的用法

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  4. 《ES6标准入门》(阮一峰)--6.正则的扩展

    1.RegExp 构造函数 在 ES5 中,RegExp构造函数的参数有两种情况. 第一种情况是,参数是字符串,这时第二个参数表示正则表达式的修饰符(flag). var regex = new Re ...

  5. SpringBoot启动流程分析

    前景提示 @ComponentScan  的处理都放在org.springframework.context.annotation.ConfigurationClassParser#doProcess ...

  6. jQuery通过name获取值

    使用jQuery获取name="day"的input对象: 方法1 var dayObj=$('input[name="day"]'); for(int i=0 ...

  7. Django static配置

    STATIC_URL = '/static/' # HTML中使用的静态文件夹前缀 STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static&q ...

  8. SHELL学习笔记三

    SHELL学习笔记一 SHELL学习笔记二 SHELL学习笔记三 for 命令 读取列表中的复杂值 从变量读取列表 从命令读取值 更改字段分隔符 用通配符读取目录 which 使用多个测试命令 unt ...

  9. Tornado中的Cookie设置

    Tornado中的cookie分为两种--普通cookie和安全cookie 普通cookie 1.创建cookie 原型 self.set_cookie(name, value, domain=No ...

  10. P 1029 旧键盘

    转跳点: