Lambda语句的嵌套

// 获取所有长度最短的名字(注意:可能有多个)

string[] names = { "Tom", "Dick", "Harry", "Mary", "Jay" };
IEnumerable<string> outQuery = names
.Where(
    n => n.Length == names.OrderBy(n2 => n2.Length).Select(n2 => n2.Length).First()
            );

//注意,上面的==两端分别是两个长度int类型表达式,右端的orderby子句输出仍是names原型,只不过顺序变为升序了;再select是在此升序结果上取所有names成员的长度,这里转换了序列的类型由string变成了int,最后first取出最小的一个长度。

如果用Min方法,上面可简写为:

IEnumerable<string> outQuery = names
    .Where(
                n => n.Length == names.Min(n2=>n2.Length)

//注意:Min不同于Math中的Min函数,它也只能用lambda表达式做参数,且n2不能与重复用n,因为它们在同一级别相同。甚至在Min的表达式中还可用到n,如names.Min(n2=>n2.Length+n.Length),在这里只看语法,没有具有意义
                );

时间: 2024-07-28 17:35:38

Lambda语句的嵌套的相关文章

关于INSERT EXEC 语句不能嵌套的解决办法

一.问题  之前做项目的时候遇到过要在一个存储过程要操作另一个存储过程返回的结果集,想通过调用的存储过程保存到局部临时表进行操作.执行下面的sql,会提示: 消息 8164,级别 16,状态 1,过程 zryCreatePlantPlanningReport,第 27 行 INSERT EXEC 语句不能嵌套. 1 DROP TABLE #demo 2 CREATE TABLE #demo 3 ( 4 ZK_PLANNING_ID NVARCHAR(50), 5 ZK_PLAN_TITLE NV

&lt;06&gt;变量使用前易犯错误总结+if语句介绍及基本格式+if-else语句及嵌套+if语句的高级用法+if语句的使用注意点+arc4random_uniform 函数导入一个头文件&lt;stdlib.h&gt;+

1)变量要初始化 -1 0  ,或者1 依据程序而定 ---------------------------------- if语句介绍及基本格式 分支语句结构 1)if 格式: if(表达式/常量/变量){ 语句块1; } 原理: 1)先计算小括号中的表达式的值 真(1) 会执行 大括号中的语句 假(0) 不会执行 大括号中的语句 2) switch 1 #include <stdio.h> 2 3 int main(int argc, const char * argv[]) { 4 5

lambda语句实现分页查询

在进行数据查询的时候我们有真分页和假分页两种,所谓真分页就是按照根据pageIndex(当前页码)和pageSize(每页的记录条数)去数据库中查找响应的记录,而假分页呢就是先把数据的所有记录都查出来,然后在自己去截取其实截取的过程是一样的,只不过一个是在数据库中进行,一个是在我们的逻辑代码中进行.下面给大家介绍一种分页写法,让大家更好的使用lambda语句,并且能更好的理解分页查询. #region 多条件搜索用户信息 public IQueryable<UserInfo>SearchUse

Java知多少(48)try语句的嵌套

Try语句可以被嵌套.也就是说,一个try语句可以在另一个try块内部.每次进入try语句,异常的前后关系都会被推入堆栈.如果一个内部的try语句不含特殊异常的catch处理程序,堆栈将弹出,下一个try语句的catch处理程序将检查是否与之匹配.这个过程将继续直到一个catch语句匹配成功,或者是直到所有的嵌套try语句被检查耗尽.如果没有catch语句匹配,Java的运行时系统将处理这个异常.下面是运用嵌套try语句的一个例子: 1 // An example of nested try s

Mysql update语句赋值嵌套与在表列中数据后面增加数据

1.Mysql update语句赋值嵌套select  点击(此处)折叠或打开 update a set col=(select col from a where id='5') where id>5 and id<10; 报错了 ERROR 1093 (HY000): You can't specify target table 'a' for update in FROM clause 经过研究 发现是 mysql 定义update语句不能同时对同一张进行set 赋值操作,也就是说 upd

4.5 以卫语句取代嵌套条件式

[1]原代码 1 double GetPayAmount() 2 { 3 double result; 4 if (IsDead()) 5 { 6 result = DeadAmount(); 7 } 8 else 9 { 10 if (IsSeparated()) 11 { 12 result = SeparatedAmount(); 13 } 14 else 15 { 16 if (IsRetired()) 17 { 18 result = RetiredPayAmount(); 19 }

C#3.0之神奇的Lambda表达式和Lambda语句

“Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式目录树类型.所有 Lambda 表达式都使用 Lambda 运算符 =>,该运算符读为“goes to”.该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块.Lambda 表达式 x => x * x 读作“x goes to x times x”.可以将此表达式分配给委托类型. 表达式在右边的 Lambda 表达式称为“Lambda 表达式”. Lambda 表达式在构造表达式目

Java基础---Java条件语句之嵌套if(二十)

Java条件语句之嵌套 if 嵌套 if 语句,只有当外层 if 的条件成立时,才会判断内层 if 的条件.例如,活动计划的安排,如果今天是工作日,则去上班,如果今天是周末,则外出游玩:同时,如果周末天气晴朗,则去室外游乐场游玩,否则去室内游乐场游玩. 语法:  执行过程:  例如: 运行结果: 代码: public class Helloworld {            public static void main(String[] args) {          int score

SQL语句对应的LINQ和Lambda语句

1. 查询Student表中的所有记录的Sname.Ssex和Class列.select sname,ssex,class from studentLinq:    from s in Students    select new {        s.SNAME,        s.SSEX,        s.CLASS    }Lambda:    Students.Select( s => new {        SNAME = s.SNAME,SSEX = s.SSEX,CLASS