lambda expressions
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相关推荐
- lambda expressions are not supported at this language level
IDEA下报错:lambda expressions are not supported at this language level 解决: 1. File -> Project Struct ...
- 【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错误的解决方法 ...
- Idea Lambda expressions are not supported at language level '5'
错误如下 IDEA运行时报错了,错误如下 Idea Lambda expressions are not supported at language level '5' 在网上查找一番,最终解决了. ...
- 解决IDEA报错:Lambda expressions not supported at language level '7'
这是因为项目选择的Java版本不是Java8,自然不支持Java8的Lambda 表达式 选择File → Project Structure → Project, 修改Level 到8 - Lamb ...
- Understand Lambda Expressions in 3 minutes(翻译)
本文翻译自CodeProject上的一篇简单解释Lambda表达式的文章,适合新手理解.译文后面我补充了一点对Lambda表达式的说明. 1.什么是Lambda表达式? Lambda表达式是一种匿名方 ...
- 报错:[Warning] lambda expressions only available with -std=c++11 or -std=gnu++11
翻译: 某函数当前版本用不了, 必须改成C++11或 GNU++11 解决办法: 1. 先到Dev的官网中下载当前的最新版本(已经下载了C++11版本的可直接跳到第二步),这里已经替大家封装好安装包了 ...
- Lambda expressions are not supported at language level ‘5‘
File->Project Structure:
- Idea Lambda expressions are not supported at language level '5' 解决
在网上查找方法,大多都是设置项目SDK版本号和setting-->Build, Execution, Deployment-->Compiler--> Java Compiler 设 ...
- 拉姆达表达式(Lambda Expressions)
让我们先看一个简单的拉姆达表达式: x=>x/2 这个表达式的意思是:x为参数,对x进行相应的操作后的结果作为返回值. 通过这个拉姆达表达式,我们可以看到: 这个表达式没有任何类型信息,但这并不 ...
- Java8中Lambda表达式的10个例子
Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 Java代码 //Before Java 8: new Thread(new Runnable() ...
最新文章
- 金山发布《2006年度信息安全报告》
- webpack打包路径更改_扫盲: Webpack 从扫盲到手撸(上)
- 两幅相同大小图像的相似程度的两个评价指标-PSNR和SSIM
- Python基础教程:用模块化来搭项目
- mysql 客户端_技术分享 | MySQL 客户端连不上(1045 错误)原因全解析
- 计算机网络实验lab,现代计算机网络lab02-实验报告
- QA:Visual C# 2008 compiler could not be created.
- SAP RFC BAPI
- runtime 的 assemblyIdentity 元素和bindingRedirect 元素
- 网络工程师试题(二)2020-12-8
- r型聚类分析matlab实现,浅谈Matlab中的聚类分析 Matlab聚类程序的设计
- uniapp app 腾讯云 IM 通讯 UserSig 加密协议方案
- WordPress主题可视化建站The7 V8.7
- mini2440 LED设备驱动开发源代码(宋宝华框架)
- 决策树系列(二)——基于决策树算法实现泰坦尼克号生还预测
- 如何免费把自己写的网页上传到网上?(腾讯云篇)
- C语言的那些小秘密之异常处理
- iOS视频 压缩过程 AVAssetExportSessionStatusFailed 文件创建失败
- LintCode_新手必编程50题(1-3阶段)解答与分析
- Asp.Net Core 鉴权授权
热门文章
- Table 'xxx' doesn't exist
- 7.2 重入锁(ReentrantLock)
- 23种设计模式(二十二)行为变化之命令模式
- 【5分钟 Paper】Deterministic Policy Gradient Algorithms
- JavaScript 语言精粹 高清PDF中文版
- Luogu P4109 [HEOI2015]定价 贪心
- Android Studio升级到3.0.0后构建项目时出现的问题总结
- Java多线程售票一张票多买问题
- mapper mysl实现批量插入 更新
- HDU 5071 模拟