摘要:Lambda 表达式是 C# 中一种简洁的语法,用于创建匿名函数(没有名称的函数)。它提供了一种简便的方式来表示委托或表达式树。Lambda 表达式使用箭头运算符 => 分隔输入参数和表达式主体。
Lambda 表达式是 C# 中一种简洁的语法,用于创建匿名函数(没有名称的函数)。它提供了一种简便的方式来表示委托或表达式树。Lambda 表达式使用箭头运算符 => 分隔输入参数和表达式主体。
parameters:表示输入参数,可以有多个参数,也可以没有参数。expression:表示返回值的表达式或代码块。在 LINQ(语言集成查询)中,Lambda 表达式扮演了一个重要角色,用于定义查询操作中的逻辑。LINQ 的许多方法(例如 Where、Select、OrderBy 等)都需要一个委托,Lambda 表达式通常用来表示这些委托。
Where:过滤数据List numbers = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; var evenNumbers = numbers.Where(x => x % 2 == 0); foreach (var number in evenNumbers) { Console.WriteLine(number); // 输出: 2, 4, 6, 8 }x => x % 2 == 0 是 Lambda 表达式,表示一个筛选条件,筛选出所有偶数。Select:投影数据var squares = numbers.Select(x => x * x); foreach (var square in squares) { Console.WriteLine(square); // 输出: 1, 4, 9, 16, 25, 36, 49, 64, 81 }x => x * x 是 Lambda 表达式,表示每个数字的平方。OrderBy 和 OrderByDescending:排序数据var sortedNumbers = numbers.OrderBy(x => x); foreach (var number in sortedNumbers) { Console.WriteLine(number); // 输出: 1, 2, 3, 4, 5, 6, 7, 8, 9 }x => x 是 Lambda 表达式,表示按数字本身进行排序。复杂对象的筛选和投影List people = new List { new Person { Name = "Alice", Age = 25 }, new Person { Name = "Bob", Age = 30 }, new Person { Name = "Charlie", Age = 22 } }; var adults = people.Where(p => p.Age >= 18).Select(p => p.Name); foreach (var name in adults) { Console.WriteLine(name); // 输出: Alice, Bob, Charlie }简洁性:比传统的匿名方法或委托更加简洁易读。// 使用匿名方法 numbers.Where(delegate(int x) { return x % 2 == 0; }); // 使用 Lambda 表达式 numbers.Where(x => x % 2 == 0);灵活性:可以与 LINQ 方法无缝结合,简化数据操作逻辑。强类型检查:在编译时进行类型检查,提供类型安全的操作。Lambda 表达式不仅可以表示代码块,还可以表示表达式树(Expression Trees)。表达式树可以用来动态生成代码逻辑,广泛用于 LINQ to SQL 和 Entity Framework 等技术中。
Expression> isEven = x => x % 2 == 0;Console.WriteLine(isEven.Body); // 输出: (x % 2) == 0来源:面试八股文
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!