这里主要是将数据库中的常用操作用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表达式常用写法的更多相关文章

  1. .net中LAMBDA表达式常用写法

    这里主要是将数据库中的常用操作用LAMBDA表达式重新表示了下,用法不多,但相对较常用,等有时间了还会扩展,并将查询语句及LINQ到时也一并重新整理下: 1.select语句:books.Select ...

  2. Lambda表达式常用代码示例

    Lambda表达式常用代码示例 2017-10-24 目录 1 Lambda表达式是什么2 Lambda表达式语法3 函数式接口是什么  3.1 常用函数式接口4 Lambdas和Streams结合使 ...

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

    没有用Lambda表达式的写法: Comparator<Transaction> byYear = new Comparator<Transaction>() { @Overr ...

  4. Lambda01 编程范式、lambda表达式与匿名内部类、函数式接口、lambda表达式的写法

    1 编程范式 主要的编程范式有三种:命令式编程,声明式编程和函数式编程. 1.1 命令式编程 关注计算机执行的步骤,就是告诉计算机先做什么后做什么 1.2 声明式编程 表达程序的执行逻辑,就是告诉计算 ...

  5. Java 学习笔记(11)——lambda 表达式

    在写Java代码的时候,如果某个地方需要一个接口的实现类,一般的做法是新定义一个实现类,并重写接口中的方法,在需要使用的时候new一个实现类对象使用,为了一个简单的接口或者说为了一个回调函数就得额外编 ...

  6. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  7. LAMBDA表达式常用 (全)

    这里主要是将数据库中的常用操作用LAMBDA表达式重新表示了下,用法不多,但相对较常用,等有时间了还会扩展,并将查询语句及LINQ到时也一并重新整理下: 1.select语句:books.Select ...

  8. java8学习笔记之lambda表达式

    1.lambda表达式特点 lambda表达式可以理解为可传递的匿名函数的一种方式,无名称,但有参数列表和函数体以及返回类型,可能还有一个可抛出异常的列表. 2.lambda表达式基本语法 (para ...

  9. 高放的c++学习笔记之lambda表达式

    lambda表达式:可以让代码看起来更整洁,有些结构简单且用的次数少的函数可以用lambda表达式替代, 通常结构是这样的[捕获列表](参数列表){函数部分} 捕获列表: lambda表达式如果在一个 ...

随机推荐

  1. 关于 Unity 中 ModelImporter.optimizeGameObjects

         ModelImporter.optimizeGameObjects 能够优化骨骼动画,将无用的骨骼合并,效率测试官方给出的数据差距比较大( Unity CJ 干货分享:全新的Unity移动游 ...

  2. 解决 MyEclipse 10 中 JSp页面 “return false” 报错问题

    1.MyEclipse ->. Preferences 2.validation ->>找到JavaScript validator for Js files  builder 下面 ...

  3. VellCar(barracuda buggy)

    这是我的新目标,不过是外国人设计的,youtube上好多相关视频,只是在中国被墙了,FQ能看到一个不一样的世界,附:FQ教程.国外好多玩车的都是选择这辆车,因为它结构紧凑,制作相对简单,但越野性能强悍 ...

  4. HDOJ-ACM1061(JAVA) Rightmost Digit

    题意:求n的n次方的个位数(1<=N<=1,000,000,000) 第一个最愚蠢的办法就是暴力破解,没什么意义,当然,还是实现来玩玩. 以下是JAVA暴力破解: import java. ...

  5. [USACO08JAN]电话线Telephone Lines

    多年以后,笨笨长大了,成为了电话线布置师.由于地震使得某市的电话线全部损坏,笨笨是负责接到震中市的负责人.该市周围分布着N(1<=N<=1000)根据1……n顺序编号的废弃的电话线杆,任意 ...

  6. Supervisor的安装与使用入门

    Supervisor是一个进程管理工具,官方的说法 自己开发的应用往往也希望做到随系统自动启动, 而且启动之后最好还能方便的控制其停止/重启. 传统的做法是在 /etc/init.d/ 下建立启动脚本 ...

  7. Unity手游之路<六>游戏摇杆之Easy Touch 3教程

    之前已经介绍过Unity自带的摇杆Joystick,它用起来很简单.但是它也存在很多局限,不能全部满足普通mmo手游的一些需求,例如:要能方便地更好素材:能指定在某个区域显示,或者只有在该区域触摸时才 ...

  8. Dom4J对XML的创建、修改、删除等操作

    Dom4j也可以很方便完成XML文档的创建.元素的修改.文档的查询遍历等,但dom4j稍比jdom复杂一点,不过在大片文档的情况下dom4j的性能要不jdom好. # 准备 首先,提供相关的jar包 ...

  9. android 控件花屏问题

    发现自己的手机上某个界面出现了花屏,某些控件背景被拉伸过多遮住了其他控件,很难看.这种现象高概率出现,分析了下发现:一旦发生这种现象,必然 会打印下面这种log,google了下,这种log应该是硬件 ...

  10. MyEclipse x.x各版本终极优化配置指南

    先说优化:随着myeclipse版本不断更新,其功能不断强大,更加智能及人性化,为开发人员提供了很多便利.提高了开发速度,但是也牺牲了性能,让很多机器配置稍差的开发人员头疼不已.其实我们平时常用的功能 ...