• 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();

  • 相关阅读:
    HDU 1455 http://acm.hdu.edu.cn/showproblem.php?pid=1455
    UVA 11300 Spreading the Wealth
    HDU 1702 http://acm.hdu.edu.cn/showproblem.php?pid=1702
    栈的简单应用 HDU 1022 http://acm.hdu.edu.cn/showproblem.php?pid=1022
    HDU 1702 队列与栈的简单运用http://acm.hdu.edu.cn/showproblem.php?pid=1702
    背包模板(01背包,完全背包,多重背包)
    XSS内容拓展--伪造你的IP
    Linux文件系统
    2015阿里校招研发工程师笔试题
    鸟哥的私房菜复习一
  • 原文地址:https://www.cnblogs.com/jeffry/p/6089474.html
Copyright © 2020-2023  润新知