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. mysql 联接结果集函数_Oracle 中函数如何返回结果集
  2. 一套Python试题
  3. 2018 年最值得期待的学术进展——致人工智能研究者们的年终总结
  4. 【高级Java架构师系统学习】java如何开发安卓软件
  5. andorid 开发笔记 -- 问题与解决
  6. Linux -- Samba用户认证
  7. The 2007 Microsoft Office System RTM is ready to rock !
  8. linux应用程序之----时间类编程
  9. lnmp无法远程连接mysql_MySQL(一):设置root 可以远程连接MySQL
  10. 两表格合并_六个高效办公Excel小技巧,让你提前下班两小时!
  11. (19)System Verilog利用clocking块产生输入信号延迟激励
  12. 给你看一下真实的后浪...
  13. POJ 3294 Life Forms
  14. 信息安全工程师是什么?
  15. 51单片机智能家居环境检测 烟雾温度GSM短信提示报警器(原理图+程序+仿真+PCB)
  16. 6.1、startx命令怎么不能进入图形界面
  17. Cocos2d-x 3.1.1 学习日志16--A星算法(A*搜索算法)学问
  18. 用mpx框架自定义小程序底部tabbar
  19. SPSS——方差分析(Analysis of Variance, ANOVA)——单因素方差分析
  20. 尚硅谷电商管理平台笔记2

热门文章

  1. python locust post 参数拼接md5_Locust性能测试--接口加密参数关联
  2. android sh 指令_Android ADB Shell命令解析
  3. addu指令_大金哥的超标量处理器学习笔记之5——指令集体系
  4. 【渝粤教育】国家开放大学2019年春季 1087数学分析专题研究 参考试题
  5. LeetCode刷题系列(二)二分查找、二叉排序树 的应用
  6. c++进阶(十八)stack容器和queue容器
  7. PARDISO 5.0.0 Solver Project
  8. 【python】导入自定义模块
  9. DateTimePicker 控件置空
  10. 【转】char,wchar_t,WCHAR,TCHAR,ACHAR的区别