.net中LAMBDA表达式常用写法

摘要:
这里,我们主要使用LAMBDA表达式来重新表达数据库中的常见操作。用法不多,但比较常见。它们将在时间到来时展开,查询语句和LINQ也将在到达时重新组织:1.select语句:books。选择(p=˃new{p.Title,p.UnitPrice,p.Author})//Anonymous 2.where statement:books。其中(p=˃p.UnitPrice==100&&p.Title=“AB

这里主要是将数据库中的常用操作用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 descTitle 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表达式常用写法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇spring定时任务详解(@Scheduled注解)[转] Blob对象下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

java函数式编程

1.函数式接口 1.1概念:java中有且只有一个抽象方法的接口。 1.2格式: 修饰符 interface接口名称 { public abstract返回值类型 方法名称(可选参数信息); //其他非抽象方法内容 } //或者 public interfaceMyFunctionalInterface { voidmyMethod(); }...

java8 lambda表达式应用--获取数组中重复的数据

现在已经出java 10了。之前趁java8出来的那段时间学习了lambda表达式,最近项目中需要用到在数组中寻找重复数据,按照以前的思维,就是写循环!能解决这个问题,旧的技术确实能解决这个问题,但代码行数和性能不一定有这么好。这就是学习新技术的动力所在吧,不然老是用旧技术,总会有一天发现,旧技术解决不了的问题,而新技术只需要几行代码,这就尴尬了。 获取重...

GUI学习之二十四——QDialog学习总结

今天学习对话框输入控件的基类(QDialog)。 一.描述 是对话类窗口(字体框、颜色选择、文件选择框等)的基类。 对话框窗口是顶级窗口(就是说不包含于哪个父类的显示界面里),主要用于短期任务和与用户的短期通信。 QDialogs是可以有返回值的(字体、颜色等),有默认按钮(确认、取消和关闭)。 二.对话框的种类   对话框可以是模态或非模态的对话框   ...

Lamda表达式

2020/02/01 【面试】请你说说Lamda表达式的优缺点。 考察点:Java基础 参考回答: 优点:1. 简洁。2. 非常容易并行计算。3. 可能代表未来的编程趋势。 缺点:1. 若不用并行计算,很多时候计算速度没有比传统的 for 循环快。(并行计算有时需要预热才显示出效率优势)2. 不容易调试。3. 若其他程序员没有学过 lambda 表达式,代...

Java 8:掌握 Lambda 表达式

本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总结。 ​ 1. 概述 Java 8 引入的 Lambda 表达式的主要作用就是简化部分匿名内部类的写法。 能够使用 Lambda 表达式的一个重要依据是必须...

Python:匿名函数lambda的函数用法和排序用法

一、介绍: Lambda函数,是一个匿名函数,创建语法:  lambda parameters:express parameters:可选,如果提供,通常是逗号分隔的变量表达式形式,即位置参数。 expression:不能包含分支或循环(但允许条件表达式),也不能包含return(或yield)函数。如果为元组,则应用圆括号将其包含起来。 调用lambda...