今天研究了一下 C# Lambda 表达式,那是因为昨天有同事提醒了一下我说会不会 Lambda 表达式,以前也听说过 C# 中有 Lambda 表达式这个东东,但由于之前接触 C# 偏少,基本上是擦肩而过的没有深入去研究,所以一下子蒙了,这东西到底长啥样子。有什么特点,所以早上就开始寻找这个东东,看看它是什么样,不看不知道一看惊醒了,所以这 Lambda 表达式用法在前面学 typescript 接触过,也在前面学 linq 的用法的也是。
下面用个例子来显示 Lambda 表达式的优势。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.AspNetCore.Mvc; namespace NetCode.Controllers { [Route("api/[controller]")] public class LambdaController : Controller { private List<string> _list; [HttpGet] public dynamic Main() { _list = new List<string>(); _list.AddRange(new string[] { "ASP.NET课程", "PHP课程", "J2EE课程", "数据结构课程" }); Console.WriteLine("传统的委托代码示例:"); FindListDelegate(); Console.Write("\n"); Console.WriteLine("使用匿名方法的示例:"); FindListAnonymousMethod(); Console.Write("\n"); Console.WriteLine("使用 Lambda 的示例:"); FindListAnonymousMethod(); Console.Write("\n"); return new { }; } /// <summary> /// 传统的委托代码示例 /// </summary> private void FindListDelegate() { Predicate<string> findPredicate = new Predicate<string>(IsBookCategory); List<string> bookCategory = _list.FindAll(findPredicate); foreach (string str in bookCategory) { Console.WriteLine("{0}\t", str); } } private static bool IsBookCategory(string str) { return str.EndsWith("课程"); } /// <summary> /// 使用匿名方法的示例 /// </summary> private void FindListAnonymousMethod() { List<string> bookCategory = _list.FindAll(delegate(string str){ return str.EndsWith("课程") ? true : false; }); foreach (string str in bookCategory) { Console.WriteLine("{0}\t", str); } } /// <summary> /// 使用 Lambda 的示例 /// </summary> private void FindListLambdaExpression() { List<string> bookCategory = _list.FindAll((string str)=>str.EndsWith("课程")); foreach (string str in bookCategory) { Console.WriteLine("{0}\t", str); } } } }

执行结果
其实网上有许多关于这方面的资料就不多写了。
参考写得比较好的文章:
http://www.cnblogs.com/kingmoon/archive/2011/05/03/2035696.html
转载请注明:隨習筆記 » .Net Core 笔记:C# Lambda表达式