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. 金山发布《2006年度信息安全报告》
  2. webpack打包路径更改_扫盲: Webpack 从扫盲到手撸(上)
  3. 两幅相同大小图像的相似程度的两个评价指标-PSNR和SSIM
  4. Python基础教程:用模块化来搭项目
  5. mysql 客户端_技术分享 | MySQL 客户端连不上(1045 错误)原因全解析
  6. 计算机网络实验lab,现代计算机网络lab02-实验报告
  7. QA:Visual C# 2008 compiler could not be created.
  8. SAP RFC BAPI
  9. runtime 的 assemblyIdentity 元素和bindingRedirect 元素
  10. 网络工程师试题(二)2020-12-8
  11. r型聚类分析matlab实现,浅谈Matlab中的聚类分析 Matlab聚类程序的设计
  12. uniapp app 腾讯云 IM 通讯 UserSig 加密协议方案
  13. WordPress主题可视化建站The7 V8.7
  14. mini2440 LED设备驱动开发源代码(宋宝华框架)
  15. 决策树系列(二)——基于决策树算法实现泰坦尼克号生还预测
  16. 如何免费把自己写的网页上传到网上?(腾讯云篇)
  17. C语言的那些小秘密之异常处理
  18. iOS视频 压缩过程 AVAssetExportSessionStatusFailed 文件创建失败
  19. LintCode_新手必编程50题(1-3阶段)解答与分析
  20. Asp.Net Core 鉴权授权

热门文章

  1. Table 'xxx' doesn't exist
  2. 7.2 重入锁(ReentrantLock)
  3. 23种设计模式(二十二)行为变化之命令模式
  4. 【5分钟 Paper】Deterministic Policy Gradient Algorithms
  5. JavaScript 语言精粹 高清PDF中文版
  6. Luogu P4109 [HEOI2015]定价 贪心
  7. Android Studio升级到3.0.0后构建项目时出现的问题总结
  8. Java多线程售票一张票多买问题
  9. mapper mysl实现批量插入 更新
  10. HDU 5071 模拟