1. 表达式链接扩展封装,ORM常用 And  Or

/// <summary>

/// 表达式访问者

/// </summary>

public class ExpressionVisitorTest

{

public static void Show()
     {

#region 表达式链接
         {
             Expression<Func<People, bool>> lambda1 = x => x.Age > 5;
             Expression<Func<People, bool>> lambda2 = x => x.Id > 5;
             Expression<Func<People, bool>> lambda3 = lambda1.And(lambda2);
             Expression<Func<People, bool>> lambda4 = lambda1.Or(lambda2);
             Expression<Func<People, bool>> lambda5 = lambda1.Not();
             Do1(lambda3);
             Do1(lambda4);
             Do1(lambda5);
         }
         #endregion

}
     #region PrivateMethod
     private static void Do1(Func<People, bool> func)
     {
         List<People> people = new List<People>();
         people.Where(func);
     }
     private static void Do1(Expression<Func<People, bool>> func)
     {
         List<People> people = new List<People>()
         {
             new People(){Id=4,Name="123",Age=4},
             new People(){Id=5,Name="234",Age=5},
             new People(){Id=6,Name="345",Age=6},
         };

List<People> peopleList = people.Where(func.Compile()).ToList();
     }

private static IQueryable<People> GetQueryable(Expression<Func<People, bool>> func)
     {
         List<People> people = new List<People>()
         {
             new People(){Id=4,Name="123",Age=4},
             new People(){Id=5,Name="234",Age=5},
             new People(){Id=6,Name="345",Age=6},
         };

return people.AsQueryable<People>().Where(func);
     }
     #endregion

}

学习笔记: Expression表达式目录树详解和扩展封装的更多相关文章

  1. 【学习笔记】Expression表达式目录树

    Expression表达式目录树:一个能拼装能解析的数据结构,语法树. 一.手动拼装表达式目录树 示例1: /// <summary> /// 展示表达式树,协助用的 /// 编译lamb ...

  2. IP地址和子网划分学习笔记之《IP地址详解》

    2018-05-03 18:47:37   在学习IP地址和子网划分前,必须对进制计数有一定了解,尤其是二进制和十进制之间的相互转换,对于我们掌握IP地址和子网的划分非常有帮助,可参看如下目录详文. ...

  3. 第十五节:Expression表达式目录树(与委托的区别、自行拼接、总结几类实例间的拷贝)

    一. 基本介绍 回忆: 最早接触到表达式目录树(Expression)可能要追溯到几年前使用EF早期的时候,发现where方法里的参数是Expression<Func<T,bool> ...

  4. 零拷贝详解 Java NIO学习笔记四(零拷贝详解)

    转 https://blog.csdn.net/u013096088/article/details/79122671 Java NIO学习笔记四(零拷贝详解) 2018年01月21日 20:20:5 ...

  5. 【手撸一个ORM】第五步、Expression(表达式目录树)转换为Where子句

    说明 在SQL中,查询.修改比较常用到WHERE子句,在这里根据使用场景不同,定义了两个类,一个用于查询,一个用于修改(插入)操作.原因是: 查询操作支持一级导航属性查询,如student.Schoo ...

  6. Expression表达式目录树

    一.初识Expression 1.在上一篇我们讲到了委托(忘记了可以在看看,点赞在看养成习惯),今天要讲的Expression也和委托有一点点关系吧(没有直接关系,只是想要大家看看我其他的文章),Ex ...

  7. EXpression 表达式目录树

    表达式树   前面n-1的是一个表达式  最后一个是一个表达式  一直拆开拆到最后 继承ExpressionVisitor的类  可以重写获取到表达式树的方法进行扩张和改写 委托是编译成一个方法 表达 ...

  8. Java学习笔记 线程池使用及详解

    有点笨,参考了好几篇大佬们写的文章才整理出来的笔记.... 字面意思上解释,线程池就是装有线程的池,我们可以把要执行的多线程交给线程池来处理,和连接池的概念一样,通过维护一定数量的线程池来达到多个线程 ...

  9. [读书笔记]C#学习笔记八:StringBuilder与String详解及参数传递问题剖析

    前言 上次在公司开会时有同事分享windebug的知识, 拿的是string字符串Concat拼接 然后用while(true){}死循环的Demo来讲解.其中有提及string操作大量字符串效率低下 ...

随机推荐

  1. python之路5-函数

    定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可 特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 def hello(): print(& ...

  2. $(function(){})简述

    用jQ的人很多人都是这么开始写脚本的: $(function(){ // do something }); 其实这个就是jq ready()的简写,他等价于: $(document).ready(fu ...

  3. Linux 学习 (十一) 软件安装管理

    Linux软件安装管理 学习笔记 软件包简介 软件包分类: 源码包 :脚本安装包 二进制包(RPM 包.系统默认包) 源码包的优点: 开源,如果有足够的能力,可以修改源代码 可以自由选择所需的功能 软 ...

  4. git安装和GitHub使用

    一.git安装 1.git下载 https://github.com/git-for-windows/git/releases/tag/v2.17.1.windows.2 在如上地址下载git,并安装 ...

  5. Magento2.X 前端&综合 简要

    主题是Magento的应用程序,它提供了整个应用的前端部分: 主题旨在覆盖或自定义视图层资源,通过模块和库最初提供.主题由不同的供应商(前端开发人员)实施,并拟分配为类似于其他组件的Magento系统 ...

  6. 阶梯Nim问题

    问题形式 有\(n\)个位置\(1...n\),每个位置上有\(a_i\)个石子.有两个人轮流操作.操作步骤是:挑选\(1...n\)中任一一个存在石子的位置\(i\),将至少1个石子移动至\(i-1 ...

  7. python 发送post和get请求

    摘自:http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201231085444250/ 测试用CGI,名字为test.py,放在ap ...

  8. 关于学习Linux的基本命令操作

    常用的Linux 命令 scp root/1.txt root@127.0.0.1:/home rpm  安装软件 systemctl start service 启动服务 systemctl res ...

  9. Maven 学习总结 (四)之 测试

    使用Maven测试 Maven的重要职责之一就是自动运行单元测试.它通过maven-surefire-plugin与主流的单元测试框架JUnit3.JUnit4以及TestNG集成,并且能够自动生成丰 ...

  10. CentOS7.2 设置静态ip

    先找到配置文件: [root@localhost bin]# cd /etc/sysconfig/network-scripts [root@localhost network-scripts]# l ...