Linq&Lumbda (2)

"Lambda表达式"是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或表达式树类型。

Lambda 运算符: =>

该运算符读为"goes to"。 

该 Lambda 运算符的左边是输入参数(如果有),右边包含表达式或语句块。 

例如:

       Lambda 表达式 x => x * x 读作"x goes to x times x"。

这句话可以简单的总结为Lambda 表达式的语法结构:

     (输入参数)=> 表达式

注意点:

(1)当Lambda 只有一个输入参数时,可以省略括号,但其他情况是必须要加的。

AnonyDelegate ad = str =>{ Console.WriteLine(str); };

(2)当只有一个空的括号时,表示没有参数。

            AnonyDelegate2 ad2 = () => { Console.WriteLine("Hello World"); }; //申明委托
            public delegate void AnonyDelegate2();

(3)当lambda表达式中的匿名函数的方法体如果只有一句话,并且是返回值,那么可以省略{}以及return,就把=>后的表达式做为返回值

public delegate bool AnonyDelegate3(string str);

AnonyDelegate3 ad3 = (str) => str == "Hello World";

Console.WriteLine(ad3("Hello World"));

Lambda 在基于方法的 LINQ 查询中用作标准查询运算符方法(如 Where等)的参数。

应用场景:

使用基于方法的语法在 Enumerable 类中调用 Where 方法时(像在 LINQ to Objects),参数是委托类型 System.Func<T, TResult>。 

使用 Lambda 表达式创建委托很方便。 例如,当您在 System.Linq.Queryable 类中调用相同的方法时,则参数类型是 System.Linq.Expressions.Expression<Func>,其中 Func 是包含至多十六个输入参数的任何 Func 委托。 

同样,Lambda 表达式只是一种用于构造表达式树的非常简练的方式。

使用Lambda表达式如何筛选数组中大于0的数呢?其实非常简单!

int[] values = { -8, 2, 13, -5, 9 };
            IEnumerable<int> result = values.Where(s => s > 0);
            foreach (var val in result)
            {
                Console.WriteLine(val);
            }
            Console.ReadKey();

posted @   jeffery1010  Views(136)  Comments(0Edit  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗
点击右上角即可分享
微信分享提示