Expression.Lambda Method (Type, Expression, IEnumerable<ParameterExpression>)
Microsoft Silverlight will reach end of support after October 2021. Learn more.
Creates a LambdaExpression by first constructing a delegate type. It can be used when the delegate type is not known at compile time.
Namespace: System.Linq.Expressions
Assembly: System.Core (in System.Core.dll)
Syntax
'Declaration
Public Shared Function Lambda ( _
delegateType As Type, _
body As Expression, _
parameters As IEnumerable(Of ParameterExpression) _
) As LambdaExpression
public static LambdaExpression Lambda(
Type delegateType,
Expression body,
IEnumerable<ParameterExpression> parameters
)
Parameters
- delegateType
Type: System.Type
A Type that represents a delegate signature for the lambda.
- body
Type: System.Linq.Expressions.Expression
An Expression to set the Body property equal to.
- parameters
Type: System.Collections.Generic.IEnumerable<ParameterExpression>
An IEnumerable<T> that contains ParameterExpression objects to use to populate the Parameters collection.
Return Value
Type: System.Linq.Expressions.LambdaExpression
An object that represents a lambda expression which has the NodeType property equal to Lambda and the Body and Parameters properties set to the specified values.
Exceptions
Exception | Condition |
---|---|
ArgumentNullException | delegateType or body is nulla null reference (Nothing in Visual Basic). -or- One or more elements in parameters are nulla null reference (Nothing in Visual Basic). |
ArgumentException | delegateType does not represent a delegate type. -or- body.Type represents a type that is not assignable to the return type of the delegate type represented by delegateType. -or- parameters does not contain the same number of elements as the list of parameters for the delegate type represented by delegateType. -or- The Type property of an element of parameters is not assignable from the type of the corresponding parameter type of the delegate type represented by delegateType. |
Remarks
The object that is returned from this function is of type Expression<TDelegate>. The LambdaExpression type is used to represent the returned object because the concrete type of the lambda expression is not known at compile time.
The number of parameters for the delegate type represented by delegateType must equal the length of parameters.
The elements of parameters must be reference equal to the parameter expressions in body.
The Type property of the resulting object is equal to delegateType. If parameters is nulla null reference (Nothing in Visual Basic), the Parameters property of the resulting object is an empty collection.
Examples
The following example demonstrates how to create an expression that represents a lambda expression that adds 1 to the passed argument.
' 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.
outputBlock.Text &= lambdaExpr.ToString() & vbCrLf
' Compile and run the lamda expression.
' The value of the parameter is 1.
outputBlock.Text &= lambdaExpr.Compile().DynamicInvoke(1).ToString() & vbCrLf
' This code example produces the following output:
'
' arg => (arg +1)
' 2
// 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.
outputBlock.Text += lambdaExpr + "\n";
// Compile and run the lamda expression.
// The value of the parameter is 1.
outputBlock.Text += lambdaExpr.Compile().DynamicInvoke(1) + "\n";
// This code example produces the following output:
//
// arg => (arg +1)
// 2
Version Information
Silverlight
Supported in: 5, 4, 3
Silverlight for Windows Phone
Supported in: Windows Phone OS 7.1, Windows Phone OS 7.0
XNA Framework
Supported in: Windows Phone OS 7.0
Platforms
For a list of the operating systems and browsers that are supported by Silverlight, see Supported Operating Systems and Browsers.