LAMBDA表达式常用写法

这里主要是将数据库中的常用操作用LAMBDA表达式重新表示了下,用法不多,但相对较常用,等有时间了还会扩展,并将查询语句及LINQ到时也一并重新整理下:
1.select语句:books.Select(p=>new { p.Title, p.UnitPrice, p.Author});//需用匿名方式
2.where语句:books.Where(p=>p.UnitPrice==100&&p.Title=”ABC”);
补充:
像数据库中的LIKE ‘%c++%’,LAMBDA中用p.Title.Contains(“c++”)表示;
像数据库中的LIKE ‘c%’,LAMBDA中用p.Title.StartWith(“c”)表示;
像数据库中的LIKE ‘%c’,LAMBDA中用p.Title.EndsWith(“c”)表示;
Where的另一种表现形式:
books.Where(p=>{
var ret = p.UnitPrice>30&&p.Title.Contains(“c++”);
return ret;
});
3.排序语句:
像数据库中order by 升序:
通过 “对象.OrderBy(p=>p.UnitPrice)”实现
像数据库中order by 降序:
通过 “对象.OrderByDescending(p=>p.UnitPrice)”实现
像数据库中order by UnitPrice desc,Title asc:
通过 ”对象.OrderByDescending(p=>p.UnitPrice).ThenBy(p=>p.Title)”
反过来则是: ”对象.OrderBy(p=>p.UnitPrice).ThenByDescending(p=>p.Title)”

4.组函数:
var max = books.Where(p => p.CategoryId == 1001).Max(p => p.UnitPrice);
var min = books.Min(p => p.UnitPrice);
var count = books.Count( );
var avg = books.Average(p => p.UnitPrice);
var sum = books.Sum(p => p.UnitPrice);
注意,上面这些获得的东西,不是对象,是单个值

5. GROUP BY函数
// select categoryid,max(unitpirce) from books group by categoryid having max(unitprice)>50
var list6 = books.GroupBy(p => p.CategoryId).Where(p=>p.Max(q=>q.UnitPrice)>50);
foreach (var item in list6)
{
Response.Write(string.Format("
类别编号:{0},最高价{1}
",
item.Key,item.Max(p=>p.UnitPrice)));
}

6. TOP函数
//取一个范围 如3,5
var list7 = books.Skip(2).Take(3).Select(p => new { p.Title, p.CategoryId, p.UnitPrice });
// select top 5
var list7 = books.Take(5).OrderByDescending(p => p.UnitPrice)
.Select(p => new { p.CategoryId, p.UnitPrice, p.Title, p.Author });

7.union 函数
books.Where(p => p.CategoryId == 1001).Select(p => new { p.CategoryId, p.UnitPrice, p.Title, p.Author }).Union(books.Where(p => p.CategoryId == 1002).Select(p => new { p.CategoryId, p.UnitPrice, p.Title, p.Author }));
这里的Select子句中的列需对应,跟数据库中是一样的

8.Join方法,用于实现数据库中双表连接查询
//select a.title,a.unitprice,a.categoryid,b.id,b.name from books a,category b
//where a.categoryid=b.id and b.name=‘数据库’
books.Join(cates.Where(m => m.Name == "数据库"),p => p.CategoryId, q => q.ID, (a, b) => new { a.Title, a.UnitPrice, a.CategoryId, b.ID, b.Name });
说明:
Join()方法的调用对象类似于在SQL语句中第一张表的表名
而Join()方法的第一个形参是第二张表表名的Where条件
Join()方法的第二和第三个参数分别表示第一张表与第二张表的关联字段
Join()方法的第四个参数表示从两表中需要获取的字段,(a, b)分别表示第一张表和第二张表

时间: 2024-08-19 10:49:36

LAMBDA表达式常用写法的相关文章

.NET笔记系列:LAMBDA表达式常用写法

这里主要是将数据库中的常用操作用LAMBDA表达式重新表示了下,用法不多,但相对较常用,等有时间了还会扩展,并将查询语句及LINQ到时也一并重新整理下: 1.select语句:books.Select(p=>new { p.Title, p.UnitPrice, p.Author});//需用匿名方式 2.where语句:books.Where(p=>p.UnitPrice==100&&p.Title=”ABC”); 补充: 像数据库中的LIKE ‘%c++%’,LAMBDA中

Lambda01 编程范式、lambda表达式与匿名内部类、lambda表达式的写法

1 编程范式 主要的编程范式有三种:命令式编程,声明式编程和函数式编程. 1.1 命令式编程 关注计算机执行的步骤,就是告诉计算机先做什么后做什么 1.2 声明式编程 表达程序的执行逻辑,就是告诉计算机要做什么,不指定具体怎么做 1.3 函数式编程 跟声明式编程类似,就是告诉计算机做什么,不指定具体怎么做 参考博文 1.4 demo实例 1.4.1 需求 随机产生一个int类型的数组,分别利用命令式编程和函数值编程获取数组中的最小值 1.4.2 思路 命令式编程: 随记产生int类型数组 ->

LAMBDA表达式常用 (全)

这里主要是将数据库中的常用操作用LAMBDA表达式重新表示了下,用法不多,但相对较常用,等有时间了还会扩展,并将查询语句及LINQ到时也一并重新整理下: 1.select语句:books.Select(p=>new { p.Title, p.UnitPrice, p.Author});//需用匿名方式 2.where语句:books.Where(p=>p.UnitPrice==100&&p.Title=”ABC”); 补充: 像数据库中的LIKE ‘%c++%’,LAMBDA中

Spring切入点表达式常用写法

自从使用AspectJ风格切面配置,使得Spring的切面配置大大简化,但是AspectJ是另外一个开源项目,其规则表达式的语法也稍稍有些怪异. 下面给出一些常见示例的写法: 比如,下面是一个对Service包上所有方法的切面配置 <aop:config> <aop:pointcut id="serviceOperation" expression="execution(* *..service*..*(..))"/> <aop:adv

Spring切点表达式常用写法

任意公共方法的执行: execution(public * *(..)) 任何一个名字以 set 开始的方法的执行: execution(* set*(..)) AccountService 接口定义的任意方法的执行: execution(* com.xyz.service.AccountService.*(..)) 在 service 包中定义的任意方法的执行: execution(* com.xyz.service.*.*(..)) 在 service 包或其子包中定义的任意方法的执行: e

java8之lambda表达式入门

1.基本介绍 lambda表达式,即带有参数的表达式,为了更清晰地理解lambda表达式,先上代码: 1.1 两种方式的对比 1.1.1 方式1-匿名内部类 class Student{ private String name; private Double score; public Student(String name, Double score) { this.name = name; this.score = score; } public String getName() { ret

Java8新特性学习笔记(一) Lambda表达式

没有用Lambda表达式的写法:  Comparator<Transaction> byYear = new Comparator<Transaction>() {             @Override            public int compare(Transaction o1, Transaction o2) {                return o1.getValue().compareTo(o2.getValue());             

异步Lambda表达式问题的探索

"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 异步Lambda表达式问题的探索 - 飞鸿踏雪 - 博客频道 - CSDN.NET 飞鸿踏雪 如果可以,为什么不让一切更好一点呢 目录视图 摘要视图 订阅 [活动]2017 CSDN博客专栏评选 &nbsp [5月书讯]流畅的Python,终于等到你!    &

java8之lambda表达式(1)-基本语法

参考:http://www.cnblogs.com/andywithu/p/7344507.html lambda表达式,即带有参数的表达式,为更清晰地理解lambda表达式,先看如下例子: (1) class Student{ private String name; private Double score; public Student(String name, Double score) { this.name = name; this.score = score; } public S