如何在C#中使用Lambda表达式

Lambda表达式最初是在.NET 3.5中引入的,同时提供了语言集成查询(LINQ)。 Lambda表达式就像匿名方法,但具有更大的灵活性。 使用lambda表达式时,无需指定输入的类型。 因此,lambda表达式提供了一种更简短的表示匿名方法的方法。
在本文中,我们将研究如何在C#中使用lambda表达式。 若要使用本文提供的代码示例,您应该在系统中安装Visual Studio 2019。 如果您还没有副本,则可以在此处下载Visual Studio 2019 。

[ 同样在InfoWorld上:您不知道需要的7个Visual Studio Code扩展 ] 在Visual Studio中创建控制台应用程序项目 首先,让我们在Visual Studio中创建一个.NET Core控制台应用程序项目。 假设系统中已安装Visual Studio 2019,请按照以下概述的步骤在Visual Studio中创建新的.NET Core控制台应用程序项目。

  1. 启动Visual Studio IDE。
  2. 点击“创建新项目”。
  3. 在“创建新项目”窗口中,从显示的模板列表中选择“控制台应用程序(.NET Core)”。
  4. 点击下一步。
  5. 在接下来显示的“配置新项目”窗口中,指定新项目的名称和位置。
  6. 单击创建。
执行以下步骤应会在Visual Studio 2019中产生一个新的.NET Core控制台应用程序项目。在本文的后续部分中,我们将使用该项目来处理C#lambda表达式。
Lambda表达的解剖 本质上,lambda表达式是没有声明的方法。 换句话说,lambda表达式是一种没有访问说明符或名称的方法。 Lambda表达式可分为两部分-左部分和右部分。 左部分用于输入,右部分用于编写表达式。
这是在C#中使用lambda表达式的语法。

(Input parameters) => Expression or statement block

您可以使用两种类型的Lambda表达式,即表达式Lambda和语句Lambda。 表达式lambda由左侧的输入和右??侧的表达式组成,如下所示。
input => expression;

语句lambda由左侧的输入和右??侧的一组语句组成,如下所示。

input => { statements };

【如何在C#中使用Lambda表达式】
[ 同样在InfoWorld上:如何在ASP.NET Web API中记录请求和响应元数据 ] C#中的Lambda表达式示例 编写lambda表达式很简单-您只需要从匿名方法中删除委托关键字和参数类型即可。 请考虑以下使用委托关键字以及参数类型的匿名方法。
delegate(Author a) { return a.IsActive && a.NoOfBooksAuthored > 10; }

上面的语句可以转换为lambda表达式,如下面的代码片段所示。
(a) => { a.IsActive && a.NoOfBooksAuthored > 10; }

在上面的语句中, a是参数,而=>是lambda运算符。 以下语句是表达式。
a.IsActive && a.NoOfBooksAuthored > 10;

这是lambda表达式的另一个示例,该示例在控制台窗口中显示1到9之间的奇数。

List integers = new List { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
foreach(int num in integers.Where(n => n % 2 == 1).ToList())
{
Console.WriteLine(num);
}

带和不带参数的Lambda表达式 Lambda表达式可以是无参数的,也可以具有一个或多个参数。 以下代码段说明了没有任何参数的lambda表达式。
() => Console.WriteLine("This is a lambda expression without any parameter");

Lambda表达式也可以具有一个或多个参数。 以下代码段说明了如何将一个参数传递给lambda表达式。
(a, numberOfBooksAuthored) => a.NoOfBooksAuthored >= numberOfBooksAuthored;

您还可以在lambda表达式中指定参数的类型,如下面的代码段所示。
(a, int numberOfBooksAuthored) => a.NoOfBooksAuthored >= numberOfBooksAuthored;

您甚至可以使用花括号在lambda表达式中指定多个语句。 在下面的代码片段中显示了这一点。
(a, 10) =>
{
Console.WriteLine("This is an example of a lambda expression
with multiple statements");
return a.NoOfBooksAuthored >= 10;
}


[ 通过InfoWorld的App Dev Report新闻通讯了解软件开发中的热门话题 ] C#中的语句lambda 语句lambda使用与表达式lambdas相同的语法。 不同之处在于,lambda语句具有一个包含一个或多个语句的代码块,而不是在运算符的右侧具有表达式。
以下代码段说明了如何利用语句lambda在控制台窗口中显示1到9之间的偶数。
int[] integers = new[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
foreach (int i in integers.Where(x =>
{
if (x % 2 == 0)
return true;
return false;
}
))
Console.WriteLine(i);

Lambda表达式是.NET和.NET Core的一项重要功能,它们提供了一种表示匿名方法的较短方法。 Lambda表达式可以具有零个参数或一个或多个。 您甚至可以将lambda表达式分配给Func,Action或Predicate委托。 在以后的文章中,我们将探讨lambda表达式的这些和其他功能。 我们还将探讨如何使用lambda表达式和LINQ以及异步lambda。
如何在C#中执行更多操作:
  • 何时在C#中使用抽象类与接口
  • 如何在C#中使用AutoMapper
  • 如何在C#中使用Lambda表达式
  • 如何在C#中与Action,Func和Predicate委托一起使用
  • 如何在C#中与委托人一起工作
  • 如何在C#中实现一个简单的记录器
  • 如何在C#中使用属性
  • 如何在C#中使用log4net
  • 如何在C#中实现存储库设计模式
  • 如何在C#中使用反射
  • 如何在C#中使用FileSystemWatcher
  • 如何在C#中执行延迟初始化
  • 如何在C#中使用MSMQ
  • 如何在C#中使用扩展方法
  • 如何在C#中使用Lambda表达式
  • 何时在C#中使用volatile关键字
  • 如何在C#中使用yield关键字
  • 如何在C#中实现多态
  • 如何在C#中构建自己的任务计划程序
  • 如何在C#中使用RabbitMQ
  • 如何在C#中使用元组
  • 探索C#中的虚拟和抽象方法
From: https://www.infoworld.com/article/3516071/how-to-use-lambda-expressions-in-csharp.html

    推荐阅读