zoukankan      html  css  js  c++  java
  • Linq随笔01

    学习Linq首先要知道Lambda

    Lambda分为Lambda表达式和Lambda语句

    1. 1.          Lambda简介

    一个Lambda Expression  (译为Lambda式) 就是一个包含若干表达式和语句的匿名函数。可以被用作创建委托对象或表达式树类型。

    所有的Lambda式都使用操作符“=>“,表示“goes to (转变为)”。操作符左边部分是输入参数表,右边部分是表达式或语句块。x => x * x 读成“x转变为x 乘x”。

    Lambda式可以被赋值给一个委托类型:

    例1

    delegate int del(int i);

    del myDelegate = x => x * x;

    int j = myDelegate(5); //j = 25

    也可以被用于创建一个表达式树类型:

    例2

    using System.Linq.Expressions;

    //…

    Expression<del> = x => x *x;

    操作符“=>”具有和“=”一样的运算优先级,且为右相关(右边先执行)。

    在例1中,我们注意到委托的定义中有一个int类型的输入参数以及int类型的返回值。例子中的Lambda式中并没有任何类型的声明。是编译器为我们做了相应的隐式数据类型转换:输入参数类型能够从委托的输入参数类型隐式转换,返回类型能够被隐式转换为委托的返回类型。

    Lambda式不允许作为“is”和“as”操作符的左操作数出现。也就是

    del myDelegate = x => x * x as string;      //error

    1. 2.  表达式Lambda

    由一个计算表达式组成的一个Lambda式称之为表达式Lambda。表达式Lambda常被用于构造表达式树。一个表达式Lambda返回计算表达式运算的结果。

    基本结构:

    (input parameters) => expression

    如果只有一个输入参数时,括号可以省略。如果具有一个以上的输入参数,必需加上括号。

    (x) => x * x 等于 x => x * x

    (x, y) => x == y

    可以显式指定输入参数的类型

    (int x, string s) => s.Length > x

    也可以没有任何输入参数

    () => SomeMethod1()

    上面这段代码在Lambda式中调用了一个方法。需要注意的是,如果在创建会被其他方使用的表达式树的时候,不宜在Lambda式中执行方法调用。比如:在SQL Server内执行。

    一般来说,让一个方法在原先设计的上下文环境以外执行没有意义,也不能真正工作。

    1. 3.  语句Lambda

    语句Lambda和表达式Lambda非常相似,只是语句被包含在大括号内:

    (input parameters) => {statement;}

    大括号中的语句可以是任意多条,也可以写成多行(定义一个Lambda式也就是在定义一个匿名方法):

    TestDelegate myDel = n => { string s = n + " " + "World";

                              Console.WriteLine(s); };

    当然语句Lambda跟匿名方法一样,无法用于创建表达式树。

  • 相关阅读:
    react-native ios打包和Android打包
    用create-react-app创建的react项目怎么解决打包体积过大
    react native 新建项目运行报错
    微信分享等配置,微信授权失败讲解
    微信公众号的code,微信授权
    linux 递归删除指定文件
    mariaDB安装 无密码就可以登录、远程访问、及新版本初始化密码
    mysql 可重复插入、创建语句
    redis数据库入门
    Extjs 3.4 同值合并
  • 原文地址:https://www.cnblogs.com/kelei12399/p/2627761.html
Copyright © 2011-2022 走看看