lambda:

Java lambda表达式是Java 8中的新增功能.Java lambda表达式是Java进入函数式编程的第一步。因此,Java lambda表达式是一个可以在不属于任何类的情况下创建的函数。Java lambda表达式可以作为对象传递,并按需执行。

Java lambda表达式通常用于实现简单的事件侦听器/回调,或者使用Java Streams API进行函数式编程。

lambda expressions的使用:

很多时候我们在使用Lambda表达式查询时,比如使用Lambda表达式查询用户数据,有时候会用电话或邮箱去查询用户信息,有时候又会用户名去查询用户信息

    var user = db.Set<U_User>().Where(c => c.UserName = "nee32");var user = db.Set<U_User>().Where(c => c.TelePhone = "13888888888");

其实查询的结果都一样,但唯一的区别就是Lambda表达式中的条件不一样,那么能不能只写一个查询方法,而实现Lambda表达式中Where的有查询条件呢?答案当然是 能!例如在三层架构中使用一个方法满足使用多个条件查询,代码如下

    public class UserDAL{/// <summary>/// 根据条件查找用户列表/// </summary>/// <param name="where"></param>/// <returns></returns>public List<U_User> FindAll(System.Linq.Expressions.Func<U_User, bool>> where = null){using (EFContext db = new EFContext()){if (where == null)return db.U_User.ToList();elsereturn db.U_User.Where(where).ToList();}}}

声明了一个FindAll方法,参数是可空的Lambda表达式(Expression<Func<U_User, bool>>表示一个Lambda表达式)

其中Func<U_User, bool>使用泛型委托 传入U_User,返回一个bool值

方法调用

        public ActionResult Index(){//List<U_User> userList = userBLL.FindAll(c => c.UserName == "nee32");//List<U_User> userList = userBLL.FindAll(c => c.UserName == "nee32" && c.Status == 1);List<U_User> userList = userBLL.FindAll();return View();}

使用Expression表达式分页,注意 Linq分页之前必须先排序 分页代码如下

    /// <typeparam name="TKey">排序的字段类型</typeparam>/// <param name="pageIndex">当前页</param>/// <param name="pageSize">每页条数</param>/// <param name="orderby">排序字段 Lambda表达式</param>/// <param name="where">查询条件 Lambda表达式</param>/// <returns></returns>public List<U_User> GetPageList<TKey>(int pageIndex, int pageSize, Expression<Func<U_User, TKey>> orderby,Expression<Func<U_User, bool>> where = null){using (EFContext db = new EFContext()){var query = from d in db.U_User select d;if (where != null){query = query.Where(where);}var data = query.OrderBy(orderby).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList();return data;}}

分页方法调用

    public ActionResult Index(){List<U_User> userList = userBLL.GetPageList(1, 20, c => c.CreateTime, c => c.UserName == "nee32");return View(userList);}

参考官网http://tutorials.jenkov.com/java/lambda-expressions.html

转载于:https://www.cnblogs.com/xiaohuomiao/p/11040555.html

lambda expressions相关推荐

  1. lambda expressions are not supported at this language level

    IDEA下报错:lambda expressions are not supported at this language level 解决: 1. File -> Project Struct ...

  2. 【104】Maven3.5.0结合eclipse使用,提示Lambda expressions are allowed only at source level 1.8 or above错误的解决方法

    [104]Maven3.5.0结合eclipse使用,提示Lambda expressions are allowed only at source level 1.8 or above错误的解决方法 ...

  3. Idea Lambda expressions are not supported at language level '5'

    错误如下 IDEA运行时报错了,错误如下 Idea Lambda expressions are not supported at language level '5'  在网上查找一番,最终解决了. ...

  4. 解决IDEA报错:Lambda expressions not supported at language level '7'

    这是因为项目选择的Java版本不是Java8,自然不支持Java8的Lambda 表达式 选择File → Project Structure → Project, 修改Level 到8 - Lamb ...

  5. Understand Lambda Expressions in 3 minutes(翻译)

    本文翻译自CodeProject上的一篇简单解释Lambda表达式的文章,适合新手理解.译文后面我补充了一点对Lambda表达式的说明. 1.什么是Lambda表达式? Lambda表达式是一种匿名方 ...

  6. 报错:[Warning] lambda expressions only available with -std=c++11 or -std=gnu++11

    翻译: 某函数当前版本用不了, 必须改成C++11或 GNU++11 解决办法: 1. 先到Dev的官网中下载当前的最新版本(已经下载了C++11版本的可直接跳到第二步),这里已经替大家封装好安装包了 ...

  7. Lambda expressions are not supported at language level ‘5‘

    File->Project Structure:

  8. Idea Lambda expressions are not supported at language level '5' 解决

    在网上查找方法,大多都是设置项目SDK版本号和setting-->Build, Execution, Deployment-->Compiler--> Java Compiler 设 ...

  9. 拉姆达表达式(Lambda Expressions)

    让我们先看一个简单的拉姆达表达式: x=>x/2 这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值. 通过这个拉姆达表达式,我们可以看到: 这个表达式没有任何类型信息,但这并不 ...

  10. Java8中Lambda表达式的10个例子

    Java8中Lambda表达式的10个例子  例1 用Lambda表达式实现Runnable接口 Java代码   //Before Java 8: new Thread(new Runnable() ...

最新文章

  1. 构建并购重组服务链 蚁合拟推出三大数据平台
  2. 建立普通用户信任关系,
  3. MyBatis 框架系列之基础初识
  4. Crypto windows 安装
  5. 怎么把python结果全部显示-python 显示数组全部元素的方法
  6. emq认证mysql后如何使用_emq服务器开启mysql验证教程
  7. 深度探索C++ 对象模型(6)-Data member的绑定
  8. 异常:java.lang.IllegalArgumentException: Control character in cookie value or attribute.
  9. python下载电影网址_python收集电影下载地址
  10. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第4节 模拟BS服务器案例_2_模拟BS服务器代码实现...
  11. [LeetCode]题解(python):146-LRU Cache
  12. 腾讯产品策划类笔试题
  13. 《统计学》第八版贾俊平第八章假设检验知识点总结及课后习题答案
  14. 7个顶级静态代码分析工具
  15. c51流水灯实验报告汇编语言,单片机流水灯实验报告
  16. python 已知平行四边形三个点,求第四个点
  17. 比普通空调好,比净化器静 海尔唯一获“空·净一体”A+认证
  18. 浅谈高内聚与松耦合,各人自扫门前雪,莫管他人瓦上霜
  19. 【C语言练习——打印正方形及其变形】
  20. TeamViewer用户注意:请尽快将其更新为最新版本

热门文章

  1. matlab用regress方法求ln函数_高中数学必背50条秒杀型公式和方法!高一高二高三都要看!...
  2. Prototype使用Hash对象
  3. [渝粤教育] 新疆财经大学 金融工程 参考 资料
  4. 【渝粤教育】国家开放大学2018年秋季 1356T高级英语听说(2) 参考试题
  5. 【渝粤教育】电大中专幼儿园课程论作业 题库
  6. 【sklearn第八讲】广义线性模型
  7. 约束最优化方法 (三) 外部罚函数法
  8. 数字图像处理(三) 图像的变换
  9. CMake交叉编译配置
  10. MySQL数据库删除数据(有外键约束)