lambda表达式嵌套

顾名思义,lambda表达式嵌套就是在lambda表达式中嵌套使用lambda表达式。本文通过一个小实例来说明lambda表达式嵌套。
在开发时需要完成”对集合中的数据分组,再按照每个分组中某个特定数据对分组进行排序”的操作。本文使用学生集合作为数据源。
下面是完整的示例代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LinqInLinqExps
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Student> studentList = new List<Student>()
            {
                new Student(){Age=15,Name="zs",ClassId=1},
                new Student(){Age=12,Name="zss",ClassId=2},
                new Student(){Age=18,Name="xfs",ClassId=1},
                new Student(){Age=15,Name="fd",ClassId=3},
                new Student(){Age=15,Name="rf",ClassId=1},
                new Student(){Age=17,Name="df",ClassId=2},
                new Student(){Age=11,Name="sd",ClassId=3},
                new Student(){Age=14,Name="er",ClassId=2},
                new Student(){Age=20,Name="ss",ClassId=2}
            };
            var groupedStudentList = studentList.GroupBy(it => it.ClassId).OrderByDescending(g => g.Max(it=>it.Age));
            foreach (var g in groupedStudentList)
            {
                foreach (var item in g)
                {
                    Console.WriteLine(item.ClassId + ";" + item.Age + ";" + item.Name);
                }
            }
            Console.ReadLine();
        }
    }

    class Student
    {
        public int Age { get; set; }
        public string Name { get; set; }
        public int ClassId { get; set; }
    }
}

代码中与文章主题有关的代码仅下面一行:

var groupedStudentList = studentList.GroupBy(it => it.ClassId).OrderByDescending(g => g.Min (it=>it.Age));

这行代码先按照班级ID对学生进行分组,接着按照每个分组中学生年龄的最小值对班级进行降序排序。其中“计算每个分组学生年龄的最小值”的操作便是嵌套使用lambda表达式。
最后得到的结果如下图所示。
这里写图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lambda表达式的条件构造器用于在Lambda表达式中根据条件来构造不同的结果。它可以根据给定的条件返回不同的表达式或语句。具体来说,Lambda表达式的条件构造器可以使用if语句或者三元运算符来实现条件判断。 使用if语句的Lambda表达式条件构造器的语法如下: (parameters) -> { if (condition) { // 执行条件为真的语句 return expression1; } else { // 执行条件为假的语句 return expression2; } } 使用三元运算符的Lambda表达式条件构造器的语法如下: (parameters) -> condition ? expression1 : expression2 注意,expression1和expression2可以是表达式或者语句块。条件构造器可以根据需要自由组合和嵌套,以实现更复杂的条件逻辑。 方法引用是对Lambda表达式符合某种情况下的一种缩写,使得我们的Lambda表达式更加精简。当Lambda表达式中的逻辑非常简单且只调用了一个已存在的方法时,可以考虑使用方法引用。方法引用通过引用已存在的方法来替代Lambda表达式,使代码更加简洁和易读。方法引用的语法格式为:类名::方法名。 总结一下,Lambda表达式的条件构造器用于根据条件来构造不同的结果,可以使用if语句或者三元运算符来实现。方法引用是对符合某种情况下的Lambda表达式的一种缩写,用于替代Lambda表达式中调用已存在方法的情况,使代码更简洁。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Java学习day042 lambda表达式(构造器引用、变量作用域、处理lambda表达式、再谈Comparator)](https://blog.csdn.net/Zzehao11/article/details/105415027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [java8新特性之lambda表达式(及方法引用与构造器引用)](https://blog.csdn.net/cristianoxm/article/details/110222407)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值