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() ...
最新文章
- 构建并购重组服务链 蚁合拟推出三大数据平台
- 建立普通用户信任关系,
- MyBatis 框架系列之基础初识
- Crypto windows 安装
- 怎么把python结果全部显示-python 显示数组全部元素的方法
- emq认证mysql后如何使用_emq服务器开启mysql验证教程
- 深度探索C++ 对象模型(6)-Data member的绑定
- 异常:java.lang.IllegalArgumentException: Control character in cookie value or attribute.
- python下载电影网址_python收集电影下载地址
- 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第4节 模拟BS服务器案例_2_模拟BS服务器代码实现...
- [LeetCode]题解(python):146-LRU Cache
- 腾讯产品策划类笔试题
- 《统计学》第八版贾俊平第八章假设检验知识点总结及课后习题答案
- 7个顶级静态代码分析工具
- c51流水灯实验报告汇编语言,单片机流水灯实验报告
- python 已知平行四边形三个点,求第四个点
- 比普通空调好,比净化器静 海尔唯一获“空·净一体”A+认证
- 浅谈高内聚与松耦合,各人自扫门前雪,莫管他人瓦上霜
- 【C语言练习——打印正方形及其变形】
- TeamViewer用户注意:请尽快将其更新为最新版本
热门文章
- matlab用regress方法求ln函数_高中数学必背50条秒杀型公式和方法!高一高二高三都要看!...
- Prototype使用Hash对象
- [渝粤教育] 新疆财经大学 金融工程 参考 资料
- 【渝粤教育】国家开放大学2018年秋季 1356T高级英语听说(2) 参考试题
- 【渝粤教育】电大中专幼儿园课程论作业 题库
- 【sklearn第八讲】广义线性模型
- 约束最优化方法 (三) 外部罚函数法
- 数字图像处理(三) 图像的变换
- CMake交叉编译配置
- MySQL数据库删除数据(有外键约束)