Expression.Lambda 方法

定义

创建一个表示 Lambda 表达式的表达式树。

重载

Lambda(Type, Expression, String, Boolean, IEnumerable<ParameterExpression>)

使用 lambda 的名称、表示是否将应用尾调用优化的参数和一个参数表达式的可枚举集合,创建一个在编译时委托类型已知的 LambdaExpression

Lambda(Type, Expression, String, IEnumerable<ParameterExpression>)

使用 lambda 的名称和参数表达式的可枚举集合,创建一个在编译时委托类型已知的 LambdaExpression

Lambda(Type, Expression, Boolean, IEnumerable<ParameterExpression>)

使用表示是否将应用尾调用优化的参数和一个参数表达式的可枚举集合,创建一个在编译时委托类型已知的 LambdaExpression

Lambda(Expression, String, Boolean, IEnumerable<ParameterExpression>)

首先从表达式主体构造一个委托类型、lambda 的名称、一个表示是否将应用尾调用优化的参数,以及一个参数表达式的可枚举集合,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

Lambda(Type, Expression, ParameterExpression[])

使用参数表达式的数组创建一个在编译时委托类型已知的 LambdaExpression

Lambda(Type, Expression, Boolean, ParameterExpression[])

使用表示是否将应用尾调用优化的参数和一个参数表达式的数组,创建一个在编译时委托类型已知的 LambdaExpression

Lambda(Expression, String, IEnumerable<ParameterExpression>)

首先从表达式主体构造一个委托类型、lambda 的名称和一个参数表达式的可枚举集合,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

Lambda(Expression, Boolean, ParameterExpression[])

首先从表达式主体构造一个委托类型,一个表示是否将应用尾调用优化的参数以及一个参数表达式的数组,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

Lambda(Expression, Boolean, IEnumerable<ParameterExpression>)

首先从表达式主体构造一个委托类型,一个表示是否将应用尾调用优化的参数以及一个参数表达式的可枚举集合,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

Lambda(Type, Expression, IEnumerable<ParameterExpression>)

使用参数表达式的可枚举集合创建一个在编译时委托类型已知的 LambdaExpression

Lambda(Expression, ParameterExpression[])

首先从表达式主体构造一个委托类型以及一个参数表达式的数组,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

Lambda(Expression, IEnumerable<ParameterExpression>)

首先从表达式主体构造一个委托类型以及一个参数表达式的可枚举集合,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

Lambda<TDelegate>(Expression, String, IEnumerable<ParameterExpression>)

使用 lambda 的名称和一个参数表达式的可枚举集合,创建一个在编译时委托类型已知的 Expression<TDelegate>

Lambda<TDelegate>(Expression, Boolean, ParameterExpression[])

使用表示是否将应用尾调用优化的参数和一个参数表达式的数组,创建一个在编译时委托类型已知的 Expression<TDelegate>

Lambda<TDelegate>(Expression, String, Boolean, IEnumerable<ParameterExpression>)

使用 lambda 的名称、表示是否将应用尾调用优化的参数以及一个参数表达式的可枚举集合,创建一个在编译时委托类型已知的 Expression<TDelegate>

Lambda<TDelegate>(Expression, ParameterExpression[])

使用参数表达式的数组创建一个在编译时委托类型已知的 Expression<TDelegate>

Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>)

使用参数表达式的可枚举集合,创建一个在编译时委托类型已知的 Expression<TDelegate>

Lambda<TDelegate>(Expression, Boolean, IEnumerable<ParameterExpression>)

使用表示是否将应用尾调用优化的参数和一个参数表达式的可枚举集合,创建一个在编译时委托类型已知的 Expression<TDelegate>

Lambda(Type, Expression, String, Boolean, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用 lambda 的名称、表示是否将应用尾调用优化的参数和一个参数表达式的可枚举集合,创建一个在编译时委托类型已知的 LambdaExpression

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(Type ^ delegateType, System::Linq::Expressions::Expression ^ body, System::String ^ name, bool tailCall, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, string name, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, string? name, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : Type * System.Linq.Expressions.Expression * string * bool * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (delegateType As Type, body As Expression, name As String, tailCall As Boolean, parameters As IEnumerable(Of ParameterExpression)) As LambdaExpression

参数

delegateType
Type

一个 Type,它表示 lambda 的委托签名。

body
Expression

要将 Expression 属性设置为与其相等的 Body

name
String

lambda 的名称。 用于发出调试信息。

tailCall
Boolean

一个 Boolean,指示在编译创建的表达式时是否将应用尾调用优化。

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 LambdaExpression,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性均设置为指定的值。

适用于

Lambda(Type, Expression, String, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用 lambda 的名称和参数表达式的可枚举集合,创建一个在编译时委托类型已知的 LambdaExpression

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(Type ^ delegateType, System::Linq::Expressions::Expression ^ body, System::String ^ name, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, string name, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, string? name, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : Type * System.Linq.Expressions.Expression * string * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (delegateType As Type, body As Expression, name As String, parameters As IEnumerable(Of ParameterExpression)) As LambdaExpression

参数

delegateType
Type

一个 Type,它表示 lambda 的委托签名。

body
Expression

要将 Expression 属性设置为与其相等的 Body

name
String

lambda 的名称。 用于发出调试信息。

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 LambdaExpression,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性均设置为指定的值。

适用于

Lambda(Type, Expression, Boolean, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用表示是否将应用尾调用优化的参数和一个参数表达式的可枚举集合,创建一个在编译时委托类型已知的 LambdaExpression

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(Type ^ delegateType, System::Linq::Expressions::Expression ^ body, bool tailCall, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : Type * System.Linq.Expressions.Expression * bool * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (delegateType As Type, body As Expression, tailCall As Boolean, parameters As IEnumerable(Of ParameterExpression)) As LambdaExpression

参数

delegateType
Type

一个 Type,它表示 lambda 的委托签名。

body
Expression

要将 Expression 属性设置为与其相等的 Body

tailCall
Boolean

一个 Boolean,指示在编译创建的表达式时是否将应用尾调用优化。

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 LambdaExpression,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性均设置为指定的值。

适用于

Lambda(Expression, String, Boolean, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

首先从表达式主体构造一个委托类型、lambda 的名称、一个表示是否将应用尾调用优化的参数,以及一个参数表达式的可枚举集合,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(System::Linq::Expressions::Expression ^ body, System::String ^ name, bool tailCall, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, string name, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, string? name, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : System.Linq.Expressions.Expression * string * bool * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (body As Expression, name As String, tailCall As Boolean, parameters As IEnumerable(Of ParameterExpression)) As LambdaExpression

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

name
String

lambda 的名称。 用于发出调试信息。

tailCall
Boolean

一个 Boolean,指示在编译创建的表达式时是否将应用尾调用优化。

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 LambdaExpression,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性均设置为指定的值。

适用于

Lambda(Type, Expression, ParameterExpression[])

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用参数表达式的数组创建一个在编译时委托类型已知的 LambdaExpression

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(Type ^ delegateType, System::Linq::Expressions::Expression ^ body, ... cli::array <System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, params System.Linq.Expressions.ParameterExpression[] parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, params System.Linq.Expressions.ParameterExpression[]? parameters);
static member Lambda : Type * System.Linq.Expressions.Expression * System.Linq.Expressions.ParameterExpression[] -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (delegateType As Type, body As Expression, ParamArray parameters As ParameterExpression()) As LambdaExpression

参数

delegateType
Type

一个 Type,它表示 lambda 的委托签名。

body
Expression

要将 Expression 属性设置为与其相等的 Body

parameters
ParameterExpression[]

用于填充 ParameterExpression 集合的 Parameters 对象的数组。

返回

一个表示 lambda 表达式的对象,该表达式的 NodeType 属性等于 Lambda,并且 BodyParameters 属性设置为指定值。

例外

delegateTypebodynull

- 或 -

parameters 中的一个或多个元素为 null

delegateType 不表示委托类型。

- 或 -

body.Type 表示一个类型,该类型不能赋给 delegateType 所表示的委托类型的返回类型。

- 或 -

parameters 没有包含与 delegateType 所表示的委托类型的参数列表相同数量的元素。

- 或 -

parameters 的元素的 Type 属性不可从 delegateType 所表示的委托类型的相应参数类型的类型赋值。

注解

从此函数返回的对象的类型为 Expression<TDelegate>。 类型 LambdaExpression 用于表示返回的对象,因为 lambda 表达式的具体类型在编译时是未知的。

表示 delegateType 的委托类型的参数数必须等于 的 parameters长度。

的元素 parameters 必须与 中的 body参数表达式相等的引用。

Type生成的 对象的 属性等于 delegateType。 如果 parametersnull,则 Parameters 生成的 对象的 属性为空集合。

适用于

Lambda(Type, Expression, Boolean, ParameterExpression[])

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用表示是否将应用尾调用优化的参数和一个参数表达式的数组,创建一个在编译时委托类型已知的 LambdaExpression

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(Type ^ delegateType, System::Linq::Expressions::Expression ^ body, bool tailCall, ... cli::array <System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, bool tailCall, params System.Linq.Expressions.ParameterExpression[] parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, bool tailCall, params System.Linq.Expressions.ParameterExpression[]? parameters);
static member Lambda : Type * System.Linq.Expressions.Expression * bool * System.Linq.Expressions.ParameterExpression[] -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (delegateType As Type, body As Expression, tailCall As Boolean, ParamArray parameters As ParameterExpression()) As LambdaExpression

参数

delegateType
Type

一个 Type,它表示 lambda 的委托签名。

body
Expression

要将 Expression 属性设置为与其相等的 Body

tailCall
Boolean

一个 Boolean,指示在编译创建的表达式时是否将应用尾调用优化。

parameters
ParameterExpression[]

其中包含用于填充 ParameterExpression 集合的 Parameters 对象的数组。

返回

一个 LambdaExpression,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性均设置为指定的值。

适用于

Lambda(Expression, String, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

首先从表达式主体构造一个委托类型、lambda 的名称和一个参数表达式的可枚举集合,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(System::Linq::Expressions::Expression ^ body, System::String ^ name, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, string name, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, string? name, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : System.Linq.Expressions.Expression * string * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (body As Expression, name As String, parameters As IEnumerable(Of ParameterExpression)) As LambdaExpression

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

name
String

lambda 的名称。 用于发出调试信息。

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 LambdaExpression,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性均设置为指定的值。

适用于

Lambda(Expression, Boolean, ParameterExpression[])

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

首先从表达式主体构造一个委托类型,一个表示是否将应用尾调用优化的参数以及一个参数表达式的数组,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(System::Linq::Expressions::Expression ^ body, bool tailCall, ... cli::array <System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, bool tailCall, params System.Linq.Expressions.ParameterExpression[] parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, bool tailCall, params System.Linq.Expressions.ParameterExpression[]? parameters);
static member Lambda : System.Linq.Expressions.Expression * bool * System.Linq.Expressions.ParameterExpression[] -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (body As Expression, tailCall As Boolean, ParamArray parameters As ParameterExpression()) As LambdaExpression

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

tailCall
Boolean

一个 Boolean,指示在编译创建的表达式时是否将应用尾调用优化。

parameters
ParameterExpression[]

其中包含用于填充 ParameterExpression 集合的 Parameters 对象的数组。

返回

一个 LambdaExpression,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性均设置为指定的值。

适用于

Lambda(Expression, Boolean, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

首先从表达式主体构造一个委托类型,一个表示是否将应用尾调用优化的参数以及一个参数表达式的可枚举集合,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(System::Linq::Expressions::Expression ^ body, bool tailCall, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : System.Linq.Expressions.Expression * bool * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (body As Expression, tailCall As Boolean, parameters As IEnumerable(Of ParameterExpression)) As LambdaExpression

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

tailCall
Boolean

一个 Boolean,指示在编译创建的表达式时是否将应用尾调用优化。

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 LambdaExpression,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性均设置为指定的值。

适用于

Lambda(Type, Expression, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用参数表达式的可枚举集合创建一个在编译时委托类型已知的 LambdaExpression

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(Type ^ delegateType, System::Linq::Expressions::Expression ^ body, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (Type delegateType, System.Linq.Expressions.Expression body, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : Type * System.Linq.Expressions.Expression * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (delegateType As Type, body As Expression, parameters As IEnumerable(Of ParameterExpression)) As LambdaExpression

参数

delegateType
Type

一个 Type,它表示 lambda 的委托签名。

body
Expression

要将 Expression 属性设置为与其相等的 Body

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个表示 lambda 表达式的对象,该表达式的 NodeType 属性等于 Lambda,并且 BodyParameters 属性设置为指定值。

例外

delegateTypebodynull

- 或 -

parameters 中的一个或多个元素为 null

delegateType 不表示委托类型。

- 或 -

body.Type 表示一个类型,该类型不能赋给 delegateType 所表示的委托类型的返回类型。

- 或 -

parameters 没有包含与 delegateType 所表示的委托类型的参数列表相同数量的元素。

- 或 -

parameters 的元素的 Type 属性不可从 delegateType 所表示的委托类型的相应参数类型的类型赋值。

示例

以下示例演示如何创建一个表达式,该表达式表示向传递的参数添加 1 的 lambda 表达式。

// Add the following directive to your file:
// using System.Linq.Expressions;

// A parameter for the lambda expression.
ParameterExpression paramExpr = Expression.Parameter(typeof(int), "arg");

// This expression represents a lambda expression
// that adds 1 to the parameter value.
LambdaExpression lambdaExpr = Expression.Lambda(
    Expression.Add(
        paramExpr,
        Expression.Constant(1)
    ),
    new List<ParameterExpression>() { paramExpr }
);

// Print out the expression.
Console.WriteLine(lambdaExpr);

// Compile and run the lamda expression.
// The value of the parameter is 1.
Console.WriteLine(lambdaExpr.Compile().DynamicInvoke(1));

// This code example produces the following output:
//
// arg => (arg +1)
// 2
' Add the following directive to your file:
' Imports System.Linq.Expressions  

' A parameter for the lambda expression.
Dim paramExpr As ParameterExpression = Expression.Parameter(GetType(Integer), "arg")

' This expression represents a lambda expression
' that adds 1 to the parameter value.
Dim lambdaExpr As LambdaExpression = Expression.Lambda(
        Expression.Add(
            paramExpr,
            Expression.Constant(1)
        ),
        New List(Of ParameterExpression)() From {paramExpr}
    )

' Print out the expression.
Console.WriteLine(lambdaExpr)

' Compile and run the lamda expression.
' The value of the parameter is 1.
Console.WriteLine(lambdaExpr.Compile().DynamicInvoke(1))

' This code example produces the following output:
'
' arg => (arg +1)
' 2

注解

从此函数返回的对象的类型为 Expression<TDelegate>。 类型 LambdaExpression 用于表示返回的对象,因为 lambda 表达式的具体类型在编译时是未知的。

表示delegateType 的委托类型的参数数必须等于 的 parameters长度。

的元素 parameters 必须与 中的 body参数表达式相等的引用。

Type生成的 对象的 属性等于 delegateType。 如果 parametersnull,则 Parameters 生成的 对象的 属性为空集合。

适用于

Lambda(Expression, ParameterExpression[])

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

首先从表达式主体构造一个委托类型以及一个参数表达式的数组,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(System::Linq::Expressions::Expression ^ body, ... cli::array <System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, params System.Linq.Expressions.ParameterExpression[] parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, params System.Linq.Expressions.ParameterExpression[]? parameters);
static member Lambda : System.Linq.Expressions.Expression * System.Linq.Expressions.ParameterExpression[] -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (body As Expression, ParamArray parameters As ParameterExpression()) As LambdaExpression

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

parameters
ParameterExpression[]

用于填充 ParameterExpression 集合的 Parameters 对象的数组。

返回

一个 LambdaExpression,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性设置为指定值。

例外

bodynull

- 或 -

parameters 的一个或多个元素为 null

parameters 包含 16 个以上的元素。

注解

参数 parameters 的元素不能超过 16 个。

的元素 parameters 必须与 中的 body参数表达式相等的引用。

此方法从其中一 System.Func 个泛型委托构造适当的委托类型。 然后,它将委托类型传递给工厂方法之 LambdaLambdaExpression,以创建 。

适用于

Lambda(Expression, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

首先从表达式主体构造一个委托类型以及一个参数表达式的可枚举集合,以便创建 LambdaExpression。 如果委托类型在编译时未知,则可以使用它。

public:
 static System::Linq::Expressions::LambdaExpression ^ Lambda(System::Linq::Expressions::Expression ^ body, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.LambdaExpression Lambda (System.Linq.Expressions.Expression body, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : System.Linq.Expressions.Expression * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.LambdaExpression
Public Shared Function Lambda (body As Expression, parameters As IEnumerable(Of ParameterExpression)) As LambdaExpression

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 LambdaExpression,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性均设置为指定的值。

适用于

Lambda<TDelegate>(Expression, String, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用 lambda 的名称和一个参数表达式的可枚举集合,创建一个在编译时委托类型已知的 Expression<TDelegate>

public:
generic <typename TDelegate>
 static System::Linq::Expressions::Expression<TDelegate> ^ Lambda(System::Linq::Expressions::Expression ^ body, System::String ^ name, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, string name, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, string? name, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : System.Linq.Expressions.Expression * string * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.Expression<'Delegate>
Public Shared Function Lambda(Of TDelegate) (body As Expression, name As String, parameters As IEnumerable(Of ParameterExpression)) As Expression(Of TDelegate)

类型参数

TDelegate

委托类型。

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

name
String

lambda 的名称。 用于生成调试信息。

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 Expression<TDelegate>,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性设置为指定值。

适用于

Lambda<TDelegate>(Expression, Boolean, ParameterExpression[])

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用表示是否将应用尾调用优化的参数和一个参数表达式的数组,创建一个在编译时委托类型已知的 Expression<TDelegate>

public:
generic <typename TDelegate>
 static System::Linq::Expressions::Expression<TDelegate> ^ Lambda(System::Linq::Expressions::Expression ^ body, bool tailCall, ... cli::array <System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, bool tailCall, params System.Linq.Expressions.ParameterExpression[] parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, bool tailCall, params System.Linq.Expressions.ParameterExpression[]? parameters);
static member Lambda : System.Linq.Expressions.Expression * bool * System.Linq.Expressions.ParameterExpression[] -> System.Linq.Expressions.Expression<'Delegate>
Public Shared Function Lambda(Of TDelegate) (body As Expression, tailCall As Boolean, ParamArray parameters As ParameterExpression()) As Expression(Of TDelegate)

类型参数

TDelegate

委托类型。

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

tailCall
Boolean

一个 Boolean,指示在编译创建的表达式时是否将应用尾调用优化。

parameters
ParameterExpression[]

其中包含用于填充 ParameterExpression 集合的 Parameters 对象的数组。

返回

一个 Expression<TDelegate>,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性设置为指定值。

适用于

Lambda<TDelegate>(Expression, String, Boolean, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用 lambda 的名称、表示是否将应用尾调用优化的参数以及一个参数表达式的可枚举集合,创建一个在编译时委托类型已知的 Expression<TDelegate>

public:
generic <typename TDelegate>
 static System::Linq::Expressions::Expression<TDelegate> ^ Lambda(System::Linq::Expressions::Expression ^ body, System::String ^ name, bool tailCall, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, string name, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, string? name, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : System.Linq.Expressions.Expression * string * bool * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.Expression<'Delegate>
Public Shared Function Lambda(Of TDelegate) (body As Expression, name As String, tailCall As Boolean, parameters As IEnumerable(Of ParameterExpression)) As Expression(Of TDelegate)

类型参数

TDelegate

委托类型。

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

name
String

lambda 的名称。 用于生成调试信息。

tailCall
Boolean

一个 Boolean,指示在编译创建的表达式时是否将应用尾调用优化。

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 Expression<TDelegate>,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性设置为指定值。

适用于

Lambda<TDelegate>(Expression, ParameterExpression[])

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用参数表达式的数组创建一个在编译时委托类型已知的 Expression<TDelegate>

public:
generic <typename TDelegate>
 static System::Linq::Expressions::Expression<TDelegate> ^ Lambda(System::Linq::Expressions::Expression ^ body, ... cli::array <System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, params System.Linq.Expressions.ParameterExpression[] parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, params System.Linq.Expressions.ParameterExpression[]? parameters);
static member Lambda : System.Linq.Expressions.Expression * System.Linq.Expressions.ParameterExpression[] -> System.Linq.Expressions.Expression<'Delegate>
Public Shared Function Lambda(Of TDelegate) (body As Expression, ParamArray parameters As ParameterExpression()) As Expression(Of TDelegate)

类型参数

TDelegate

一种委托类型。

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

parameters
ParameterExpression[]

用于填充 ParameterExpression 集合的 Parameters 对象的数组。

返回

一个 Expression<TDelegate>,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性设置为指定值。

例外

bodynull

- 或 -

parameters 中的一个或多个元素为 null

TDelegate 不是委托类型。

- 或 -

body.Type 表示一种不能赋给 TDelegate 的返回类型的类型。

- 或 -

parameters 没有包含与 TDelegate 的参数列表相同数量的元素。

- 或 -

parameters 的元素的 Type 属性不可从 TDelegate 的相应参数类型的类型赋值。

注解

委托类型的 TDelegate 参数数必须等于 中的 parameters元素数。

的元素 parameters 的引用必须与 中的body参数表达式相等。

Type生成的 对象的 属性表示类型 TDelegate。 如果 parametersnull,则 Parameters 生成的 对象的 属性为空集合。

适用于

Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用参数表达式的可枚举集合,创建一个在编译时委托类型已知的 Expression<TDelegate>

public:
generic <typename TDelegate>
 static System::Linq::Expressions::Expression<TDelegate> ^ Lambda(System::Linq::Expressions::Expression ^ body, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : System.Linq.Expressions.Expression * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.Expression<'Delegate>
Public Shared Function Lambda(Of TDelegate) (body As Expression, parameters As IEnumerable(Of ParameterExpression)) As Expression(Of TDelegate)

类型参数

TDelegate

一种委托类型。

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 Expression<TDelegate>,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性设置为指定值。

例外

bodynull

- 或 -

parameters 中的一个或多个元素为 null

TDelegate 不是委托类型。

- 或 -

body.Type 表示一种不能赋给 TDelegate 的返回类型的类型。

- 或 -

parameters 没有包含与 TDelegate 的参数列表相同数量的元素。

- 或 -

parameters 的元素的 Type 属性不可从 TDelegate 的相应参数类型的类型赋值。

注解

委托类型的 TDelegate 参数数必须等于 中的 parameters元素数。

的元素 parameters 必须与 中的 body参数表达式相等的引用。

Type生成的 对象的 属性表示类型 TDelegate。 如果 parametersnull,则 Parameters 生成的 对象的 属性为空集合。

适用于

Lambda<TDelegate>(Expression, Boolean, IEnumerable<ParameterExpression>)

Source:
LambdaExpression.cs
Source:
LambdaExpression.cs
Source:
LambdaExpression.cs

使用表示是否将应用尾调用优化的参数和一个参数表达式的可枚举集合,创建一个在编译时委托类型已知的 Expression<TDelegate>

public:
generic <typename TDelegate>
 static System::Linq::Expressions::Expression<TDelegate> ^ Lambda(System::Linq::Expressions::Expression ^ body, bool tailCall, System::Collections::Generic::IEnumerable<System::Linq::Expressions::ParameterExpression ^> ^ parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression> parameters);
public static System.Linq.Expressions.Expression<TDelegate> Lambda<TDelegate> (System.Linq.Expressions.Expression body, bool tailCall, System.Collections.Generic.IEnumerable<System.Linq.Expressions.ParameterExpression>? parameters);
static member Lambda : System.Linq.Expressions.Expression * bool * seq<System.Linq.Expressions.ParameterExpression> -> System.Linq.Expressions.Expression<'Delegate>
Public Shared Function Lambda(Of TDelegate) (body As Expression, tailCall As Boolean, parameters As IEnumerable(Of ParameterExpression)) As Expression(Of TDelegate)

类型参数

TDelegate

委托类型。

参数

body
Expression

要将 Expression 属性设置为与其相等的 Body

tailCall
Boolean

一个 Boolean,指示在编译创建的表达式时是否将应用尾调用优化。

parameters
IEnumerable<ParameterExpression>

一个 IEnumerable<T>,包含用来填充 ParameterExpression 集合的 Parameters 对象。

返回

一个 Expression<TDelegate>,其 NodeType 属性等于 Lambda,并且其 BodyParameters 属性设置为指定值。

适用于