.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中用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)分别表示第一张表和第二张表
.NET笔记系列:LAMBDA表达式常用写法的更多相关文章
- .net中LAMBDA表达式常用写法
这里主要是将数据库中的常用操作用LAMBDA表达式重新表示了下,用法不多,但相对较常用,等有时间了还会扩展,并将查询语句及LINQ到时也一并重新整理下: 1.select语句:books.Select ...
- Lambda表达式常用代码示例
Lambda表达式常用代码示例 2017-10-24 目录 1 Lambda表达式是什么2 Lambda表达式语法3 函数式接口是什么 3.1 常用函数式接口4 Lambdas和Streams结合使 ...
- Java8新特性学习笔记(一) Lambda表达式
没有用Lambda表达式的写法: Comparator<Transaction> byYear = new Comparator<Transaction>() { @Overr ...
- Lambda01 编程范式、lambda表达式与匿名内部类、函数式接口、lambda表达式的写法
1 编程范式 主要的编程范式有三种:命令式编程,声明式编程和函数式编程. 1.1 命令式编程 关注计算机执行的步骤,就是告诉计算机先做什么后做什么 1.2 声明式编程 表达程序的执行逻辑,就是告诉计算 ...
- Java 学习笔记(11)——lambda 表达式
在写Java代码的时候,如果某个地方需要一个接口的实现类,一般的做法是新定义一个实现类,并重写接口中的方法,在需要使用的时候new一个实现类对象使用,为了一个简单的接口或者说为了一个回调函数就得额外编 ...
- 0028 Java学习笔记-面向对象-Lambda表达式
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...
- LAMBDA表达式常用 (全)
这里主要是将数据库中的常用操作用LAMBDA表达式重新表示了下,用法不多,但相对较常用,等有时间了还会扩展,并将查询语句及LINQ到时也一并重新整理下: 1.select语句:books.Select ...
- java8学习笔记之lambda表达式
1.lambda表达式特点 lambda表达式可以理解为可传递的匿名函数的一种方式,无名称,但有参数列表和函数体以及返回类型,可能还有一个可抛出异常的列表. 2.lambda表达式基本语法 (para ...
- 高放的c++学习笔记之lambda表达式
lambda表达式:可以让代码看起来更整洁,有些结构简单且用的次数少的函数可以用lambda表达式替代, 通常结构是这样的[捕获列表](参数列表){函数部分} 捕获列表: lambda表达式如果在一个 ...
随机推荐
- HTTP协议分析及攻防方法
HTTP协议简介 应用层协议,无状态协议(可设定为维持TCP连接,但服务器端的资源会释放).默认HTTP的端口号为80,HTTPS的端口号为443. 基于HTTP协议的客户机访问包括4个过程,分别是建 ...
- selenium 处理浏览器多窗口
测试过程中,会弹出一些子窗口,并且有可能在多个窗口之间切换 必须要获取每个窗口的唯一标识符切换到该窗口,才能对该窗口的元素进行操作 首先,获取每个窗口的唯一标识符,然后以及和的形式返回 var mai ...
- nyoj重建二叉树(不真的建立)
感觉c++很陌生啊 题目很简单,给你一棵二叉树的后序和中序序列,求出它的前序序列(So easy!). 输入 输入有多组数据(少于100组),以文件结尾结束.每组数据仅一行,包括两个字符串,中间用 ...
- HDOJ-ACM1003(JAVA)
转载声明:原文转自http://www.cnblogs.com/xiezie/p/5502855.html 第一.二次的思路都是穷举: 第一次的实现是用二维数组: import java.util.* ...
- H5离线缓存机制-manifest
简介:Manifest 其实就是web应用的一种缓存机制,主要用于现在webapp应用中,它是浏览器自己的一种机制,随着移动互联网时代的到来,网络可靠性降低,如果我们已经将需要的文件缓存下下来,一旦网 ...
- 通过wifi调试Android程序
原文:http://www.cnblogs.com/sunzhenxing19860608/archive/2011/07/14/2106492.html 1.首先让android手机监听指定的端口: ...
- hdu4462 Scaring the Birds
Scaring the Birds Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- [Angular 2] Handle Reactive Async opreations in Service
When you use ngrx/store and you want to fire a service request. When it sucessfully return the respo ...
- ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)(转)
前两天也偶尔出现这个错误,也没在意,因为我重新修改一下mysql的root密码后又可以用了,但昨天却不行,我把root密码修改以后虽然当时能用, 一旦重新进入就都不能用了,可我的密码明明没有错啊?今天 ...
- PHP获取客户端和服务器IP地址
/** * 获取客户端IP地址 * @return string */ function get_client_ip() { if(getenv('HTTP_CLIENT_IP')){ $client ...