.NET技术-6.0. Expression 表达式树 生成 Lambda
.NET技术-6.0. Expression 表达式树 生成 Lambda
public static event Func<Student, bool> myevent;
public delegate void del(int i, int j);
static void Main(string[] args)
{ var students = new List<Student> {
new Student(){ Id=, Age=, Name="张三1", Sex=true , GradeId=},
new Student(){ Id=, Age=, Name="李四1", Sex= false , GradeId=},
new Student(){ Id=, Age=, Name="王二", Sex= false , GradeId=},
new Student(){ Id=, Age=, Name="赵六", Sex=true , GradeId=}, }; // BookShopPlus2Entities db = new BookShopPlus2Entities();
//AsNoTracking查询的对象不要放在对象池中
//特别说明:对于使用AsNoTracking()的数据不能用于修改。
//List<Book> db = bsc.Books.AsNoTracking().ToList(); //del mydel = new del(add);
//mydel.Invoke(1, 9);
//// //匿名方法
//mydel += delegate(int h, int m)
//{ //};
////Lamda表达式
//mydel += (a, b) =>
//{
// Console.WriteLine(a + b);
//}; //生成 1==1
Expression expwhere = Expression.Equal(Expression.Constant(), Expression.Constant());
//生成 s=>
ParameterExpression exps = Expression.Parameter(typeof(Student), "s");
//生成s.Age>12
Expression exp1 = Expression.GreaterThan(Expression.Property(exps, "Age"), Expression.Constant());
//生成s.Age<22
Expression exp2 = Expression.LessThan(Expression.Property(exps, "Age"), Expression.Constant());
//生成 s.Age>12 and s.Age<22 或连接 Expression.Or and 连接 Expression.And
Expression exp3 = Expression.And(exp1, exp2);
//Expression<Func<Student, bool>> lamband = Expression.Lambda < Func<Student, bool>.Combine();
//生成s=>Age>12 AND s.Age<22
Expression<Func<Student, bool>> lamband =
Expression.Lambda<Func<Student, bool>>(exp3, exps);
var s = students.Where(lamband.Compile()).ToList();
} }
public class Student
{
public int Id { get; set; } //学号
public string Name { get; set; } //学员姓名
public int Age { get; set; } //学生年龄
public bool Sex { get; set; } //学生性别
public int GradeId { get; set; }
}
引用:https://www.cnblogs.com/wlzhang/p/7690630.html
.NET技术-6.0. Expression 表达式树 生成 Lambda的更多相关文章
- .net 系列:Expression表达式树、lambda、匿名委托 的使用
首先定义一个泛型委托类型,如下: public delegate T Function<T>(T a, T b); 实现泛型委托的主体代码,并调用: public static strin ...
- .net 系列:Expression表达式树、lambda、匿名委托 的使用【转】
https://www.cnblogs.com/nicholashjh/p/7928205.html 首先定义一个泛型委托类型,如下: public delegate T Function<T& ...
- 介绍一个可以将Expression表达式树解析成Transact-SQL的项目Expression2Sql
一.Expression2Sql介绍 Expression2Sql是一个可以将Expression表达式树解析成Transact-SQL的项目.简单易用,几分钟即可上手使用,因为博主在设计Expres ...
- 委托、匿名委托、Lambda 表达式、Expression表达式树之刨根问底
本篇不是对标题所述之概念的入门文章,重点在阐述它们的异同点和应用场景.各位看官,这里就不啰嗦了,直接上代码. 首先定义一个泛型委托类型,如下: public delegate T Function&l ...
- Expression表达式树(C#)
Lambda表达式: 1.下面举例通过Lambda表达式创建了一个用于验证Name的Func委托. //通过Lambda表达式创建一个对象的Name属性验证委托 Func<SearchInfo, ...
- C#在泛型类中,通过表达式树构造lambda表达式
场景 最近对爬虫的数据库架构做调整,需要将数据迁移到MongoDB上去,需要重新实现一个针对MongoDB的Dao泛型类,好吧,动手开工,当实现删除操作的时候问题来了. 我们的删除操作定义如下:voi ...
- 关于Expression表达式树的拼接
最近在做项目中遇到一个问题,需求是这样的: 我要对已经存在的用户进行检索,可以根据用户的id 或者用户名其中的一部分字符来检索出来,这样就出现了三种情况 只有id,只有用户名中一部字符,或者全部都有. ...
- Expression表达式树
表达式树表示树状数据结构的代码,树状结构中的每个节点都是一个表达式,例如一个方法调用或类似 x < y 的二元运算 1.利用 Lambda 表达式创建表达式树 Expression<Fun ...
- Expression 表达式树学习整理
整理了一下表达式树的一些东西,入门足够了 先从ConstantExpression 开始一步一步的来吧 它表示具有常量值的表达式 我们选建一个控制台应用程序 ConstantExpression _ ...
随机推荐
- python多进程编程中常常能用到的几种方法
python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU资源,在python中大部分情况需要使用多进程.python提供了非常好用的多进程包Multiprocessing,只需要定义 ...
- 002. 使用IDEA创建MyBatis的JAVAWEB项目 ,每一步都有详细过程,完美绕过各种坑能正常运行
001. 我们新建一个Module,相当于一个工程里面的一个项目 002.选择空白的JAVA程序 003.输入项目的名字为mybatis001 004.我们对这个项目添加Support,各种框架依赖 ...
- Xcode8.0+和最新的Xcode9.0beta安装Alcatraz插件
1.安装Alcatraz 1.1终端中输入 rm -rf ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins/Alcatraz ...
- WTL之VS2013环境搭建
新版博客已经搭建好了,有问题请访问 htt://www.crazydebug.com 从国外回来,在老家入职了新公司,做c++开发,刚到新公司要熟悉公司的项目代码,目前公司在做一个主播聚合平台,界面采 ...
- 4. Linux 集群安装
1. 配置yum yum clean all yum makecache yum install wget 2.安装JDK (1) 将jdk-7u60-linux-i586.rpm通过WinSCP上传 ...
- swift中数据之间的转换
1.swift 开发 - NSDictionary与NSData互转.Dictionary与Data互转 https://blog.csdn.net/SuperMageHuang/article/de ...
- SPOJ ANARC05H 计数DP
给定一个数字串,问有多少种拆分方法,题目所谓的拆分,就是分成若干个子块,每个块的和 即为各个数字相加,当前块的和一定要小于等于后面的块的和 比如1117 就有这些[1-117], [1-1-17], ...
- vue.js实现自定义输入分页
效果如下: html: <input type="text" value="1" v-model="page.page_my_selected& ...
- Yota Phone宣告破产
作为双面屏手机的开山鼻祖,Yota Phone已经消失在大家的视线中. 据外媒报道称,开曼群岛最高法院裁定在开曼群岛注册的YotaPhone手机生产商Yota Devices公司破产.法院的相关裁定被 ...
- windows driver 获取本地时间
#define ArrayLength 260 void MyGetLocalTime() { LARGE_INTEGER li_system; LARGE_INTEGER li_Local; cha ...