Прочитать на английском

Поделиться через


Expression.Lambda Метод

Определение

Создает дерево выражений, которое представляет лямбда-выражение.

Перегрузки

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

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с именем для лямбда-функции, параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail и перечисляемой коллекцией выражений параметров.

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

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с именем для лямбда-функции и перечисляемой коллекцией выражений параметров.

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

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail, а также перечисляемую коллекцию выражений параметров.

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

Создает LambdaExpression, создавая сначала тип делегата из тела выражения, имя для лямбда-функции, параметр, указывающий, следует ли использовать оптимизацию вызовов с префиксом tail, а также перечисляемую коллекцию выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

Lambda(Type, Expression, ParameterExpression[])

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с массивом выражений параметров.

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

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail, а также массив выражений параметров.

Lambda(Expression, String, IEnumerable<ParameterExpression>)

Создает LambdaExpression, создавая сначала тип делегата из тела выражения, имя для лямбда-функции и перечисляемую коллекцию выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

Lambda(Expression, Boolean, ParameterExpression[])

Создает LambdaExpression, создавая сначала тип делегата из тела выражения, параметр, указывающий, следует ли использовать оптимизацию вызовов с префиксом tail, а также массив выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

Lambda(Expression, Boolean, IEnumerable<ParameterExpression>)

Создает LambdaExpression, создавая сначала тип делегата из тела выражения, параметр, указывающий, следует ли использовать оптимизацию вызовов с префиксом tail, а также перечисляемую коллекцию выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

Lambda(Type, Expression, IEnumerable<ParameterExpression>)

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с перечисляемой коллекцией выражений параметров.

Lambda(Expression, ParameterExpression[])

Создает LambdaExpression, создавая сначала тип делегата из тела выражения и массив выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

Lambda(Expression, IEnumerable<ParameterExpression>)

Создает LambdaExpression, создавая сначала тип делегата из тела выражения и перечисляемую коллекцию выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

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

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с именем для лямбда-функции и перечисляемой коллекцией выражений параметров.

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

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail и массивом выражений параметров.

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

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с именем для лямбда-функции, параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail и перечисляемой коллекцией выражений параметров.

Lambda<TDelegate>(Expression, ParameterExpression[])

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с массивом выражений параметров.

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

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с перечисляемой коллекцией выражений параметров.

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

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail и перечисляемой коллекцией выражений параметров.

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

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с именем для лямбда-функции, параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail и перечисляемой коллекцией выражений параметров.

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

Параметры

delegateType
Type

Объект Type, представляющий сигнатуру делегата для лямбда-выражения.

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

name
String

Имя для лямбда-функции. Используется для выпуска сведений об отладке.

tailCall
Boolean

Значение Boolean, которое указывает, следует ли использовать оптимизацию вызовов с префиксом tail при компиляции созданного выражения.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение LambdaExpression, у которого свойство NodeType равняется лямбда-выражению, а для свойств Body и Parameters заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с именем для лямбда-функции и перечисляемой коллекцией выражений параметров.

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

Параметры

delegateType
Type

Объект Type, представляющий сигнатуру делегата для лямбда-выражения.

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

name
String

Имя для лямбда-функции. Используется для выпуска сведений об отладке.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение LambdaExpression, у которого свойство NodeType равняется лямбда-выражению, а для свойств Body и Parameters заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail, а также перечисляемую коллекцию выражений параметров.

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

Параметры

delegateType
Type

Объект Type, представляющий сигнатуру делегата для лямбда-выражения.

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

tailCall
Boolean

Значение Boolean, которое указывает, следует ли использовать оптимизацию вызовов с префиксом tail при компиляции созданного выражения.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение LambdaExpression, у которого свойство NodeType равняется лямбда-выражению, а для свойств Body и Parameters заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает LambdaExpression, создавая сначала тип делегата из тела выражения, имя для лямбда-функции, параметр, указывающий, следует ли использовать оптимизацию вызовов с префиксом tail, а также перечисляемую коллекцию выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

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

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

name
String

Имя для лямбда-функции. Используется для выпуска сведений об отладке.

tailCall
Boolean

Значение Boolean, которое указывает, следует ли использовать оптимизацию вызовов с префиксом tail при компиляции созданного выражения.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение LambdaExpression, у которого свойство NodeType равняется лямбда-выражению, а для свойств Body и Parameters заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Lambda(Type, Expression, ParameterExpression[])

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с массивом выражений параметров.

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

Параметры

delegateType
Type

Тип Type, представляющий сигнатуру делегата для лямбда-выражения.

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

parameters
ParameterExpression[]

Массив объектов ParameterExpression для заполнения коллекции Parameters.

Возвращаемое значение

Объект, представляющий лямбда-выражение со свойством NodeType, равным Lambda и Body, и свойства Parameters, для которых заданы указанные значения.

Исключения

Параметр delegateType или body имеет значение null.

-или-

Один или несколько элементов в parameters имеют значение null.

Тип delegateType не представляет тип делегата.

-или-

Тип body.Type представляет тип, который не может быть назначен для типа возврата типа делегата, представленного delegateType.

-или-

parameters не содержит количество элементов, равное количеству списка параметров для типа делегата, представленного delegateType.

-или-

Свойство Type элемента parameters нельзя назначить от типа соответствующего типа параметра типа делегата, представленного через delegateType.

Комментарии

Объект, возвращаемый этой функцией, имеет тип Expression<TDelegate>. Тип LambdaExpression используется для представления возвращаемого объекта, так как конкретный тип лямбда-выражения неизвестен во время компиляции.

Число параметров для типа делегата, представленного , delegateType должно равняться длине parameters.

На элементы parameters должны быть ссылки, равные выражениям параметров в body.

Свойство Type результирующего объекта равно delegateType. Если parameters имеет значение null, Parameters свойство результирующего объекта является пустой коллекцией.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает LambdaExpression, в котором тип делегата известен во время компиляции, с параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail, а также массив выражений параметров.

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

Параметры

delegateType
Type

Объект Type, представляющий сигнатуру делегата для лямбда-выражения.

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

tailCall
Boolean

Значение Boolean, которое указывает, следует ли использовать оптимизацию вызовов с префиксом tail при компиляции созданного выражения.

parameters
ParameterExpression[]

Массив, содержащий объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение LambdaExpression, у которого свойство NodeType равняется лямбда-выражению, а для свойств Body и Parameters заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Lambda(Expression, String, IEnumerable<ParameterExpression>)

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает LambdaExpression, создавая сначала тип делегата из тела выражения, имя для лямбда-функции и перечисляемую коллекцию выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

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

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

name
String

Имя для лямбда-функции. Используется для выпуска сведений об отладке.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение LambdaExpression, у которого свойство NodeType равняется лямбда-выражению, а для свойств Body и Parameters заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Lambda(Expression, Boolean, ParameterExpression[])

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает LambdaExpression, создавая сначала тип делегата из тела выражения, параметр, указывающий, следует ли использовать оптимизацию вызовов с префиксом tail, а также массив выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

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

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

tailCall
Boolean

Значение Boolean, которое указывает, следует ли использовать оптимизацию вызовов с префиксом tail при компиляции созданного выражения.

parameters
ParameterExpression[]

Массив, содержащий объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение LambdaExpression, у которого свойство NodeType равняется лямбда-выражению, а для свойств Body и Parameters заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Lambda(Expression, Boolean, IEnumerable<ParameterExpression>)

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает LambdaExpression, создавая сначала тип делегата из тела выражения, параметр, указывающий, следует ли использовать оптимизацию вызовов с префиксом tail, а также перечисляемую коллекцию выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

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

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

tailCall
Boolean

Значение Boolean, которое указывает, следует ли использовать оптимизацию вызовов с префиксом tail при компиляции созданного выражения.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение LambdaExpression, у которого свойство NodeType равняется лямбда-выражению, а для свойств Body и Parameters заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Lambda(Type, Expression, IEnumerable<ParameterExpression>)

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
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);

Параметры

delegateType
Type

Тип Type, представляющий сигнатуру делегата для лямбда-выражения.

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Объект, представляющий лямбда-выражение со свойством NodeType, равным Lambda и Body, и свойства Parameters, для которых заданы указанные значения.

Исключения

Параметр delegateType или body имеет значение null.

-или-

Один или несколько элементов в parameters имеют значение null.

Тип delegateType не представляет тип делегата.

-или-

Тип body.Type представляет тип, который не может быть назначен для типа возврата типа делегата, представленного delegateType.

-или-

parameters не содержит количество элементов, равное количеству списка параметров для типа делегата, представленного delegateType.

-или-

Свойство Type элемента parameters нельзя назначить от типа соответствующего типа параметра типа делегата, представленного через delegateType.

Примеры

В следующем примере показано, как создать выражение, представляющее лямбда-выражение, которое добавляет 1 к переданном аргументу.

// 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

Комментарии

Объект, возвращаемый этой функцией, имеет тип Expression<TDelegate>. Тип LambdaExpression используется для представления возвращаемого объекта, так как конкретный тип лямбда-выражения неизвестен во время компиляции.

Число параметров для типа делегата, представленного ,delegateType должно быть равно длине parameters.

Элементы parameters должны быть равными выражениям параметров в body.

Свойство Type результирующего объекта равно delegateType. Если parameters имеет значение null, Parameters свойство результирующего объекта является пустой коллекцией.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Lambda(Expression, ParameterExpression[])

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает LambdaExpression, создавая сначала тип делегата из тела выражения и массив выражений параметров. Он может использоваться, если тип делегата неизвестен в момент компиляции.

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

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

parameters
ParameterExpression[]

Массив объектов ParameterExpression для заполнения коллекции Parameters.

Возвращаемое значение

Выражение LambdaExpression со свойствомNodeType, равным Lambda, и свойствами Body и Parameters, для которых заданы указанные значения.

Исключения

body имеет значение null.

-или-

Один или несколько элементов parameters имеют значение null.

Параметр parameters содержит более шестнадцати элементов.

Комментарии

Параметр parameters не должен содержать более шестнадцати элементов.

Элементы parameters должны быть равными выражениям параметров в body.

Этот метод создает соответствующий тип делегата из одного из System.Func универсальных делегатов. Затем он передает тип делегата одному из Lambda фабричного метода для создания LambdaExpression.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Lambda(Expression, IEnumerable<ParameterExpression>)

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
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);

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение LambdaExpression, у которого свойство NodeType равняется лямбда-выражению, а для свойств Body и Parameters заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с именем для лямбда-функции и перечисляемой коллекцией выражений параметров.

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

Параметры типа

TDelegate

Тип делегата.

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

name
String

Имя лямбда-выражения. Используется для создания сведений об отладке.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение Expression<TDelegate>, содержащее свойство NodeType, равное Lambda, а также свойства Body и Parameters, для которых заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail и массивом выражений параметров.

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

Параметры типа

TDelegate

Тип делегата.

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

tailCall
Boolean

Значение Boolean, которое указывает, следует ли использовать оптимизацию вызовов с префиксом tail при компиляции созданного выражения.

parameters
ParameterExpression[]

Массив, содержащий объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение Expression<TDelegate>, содержащее свойство NodeType, равное Lambda, а также свойства Body и Parameters, для которых заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с именем для лямбда-функции, параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail и перечисляемой коллекцией выражений параметров.

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

Параметры типа

TDelegate

Тип делегата.

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

name
String

Имя лямбда-выражения. Используется для создания сведений об отладке.

tailCall
Boolean

Значение Boolean, которое указывает, следует ли использовать оптимизацию вызовов с префиксом tail при компиляции созданного выражения.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение Expression<TDelegate>, содержащее свойство NodeType, равное Lambda, а также свойства Body и Parameters, для которых заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Lambda<TDelegate>(Expression, ParameterExpression[])

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с массивом выражений параметров.

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

Параметры типа

TDelegate

Тип делегата.

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

parameters
ParameterExpression[]

Массив объектов ParameterExpression для заполнения коллекции Parameters.

Возвращаемое значение

Выражение Expression<TDelegate>, содержащее свойство NodeType, равное Lambda, а также свойства Body и Parameters, для которых заданы указанные значения.

Исключения

body имеет значение null.

-или-

Один или несколько элементов в parameters имеют значение null.

Элемент TDelegate не является типом делегата.

-или-

Тип body.Type представляет тип, который не может быть назначен для типа возврата параметра TDelegate.

-или-

parameters не содержит количество элементов, равное количеству списка параметров для TDelegate.

-или-

Свойство Type элемента parameters нельзя назначить из типа соответствующего параметра TDelegate.

Комментарии

Число параметров для типа TDelegate делегата должно равняться количеству элементов в parameters.

На элементы parameters должны быть ссылки, равные выражениям параметров вbody .

Свойство Type результирующего объекта представляет тип TDelegate. Если parameters имеет значение null, Parameters свойство результирующего объекта является пустой коллекцией.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с перечисляемой коллекцией выражений параметров.

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

Параметры типа

TDelegate

Тип делегата.

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение Expression<TDelegate>, содержащее свойство NodeType, равное Lambda, а также свойства Body и Parameters, для которых заданы указанные значения.

Исключения

body имеет значение null.

-или-

Один или несколько элементов в parameters имеют значение null.

Элемент TDelegate не является типом делегата.

-или-

Тип body.Type представляет тип, который не может быть назначен для типа возврата параметра TDelegate.

-или-

parameters не содержит количество элементов, равное количеству списка параметров для TDelegate.

-или-

Свойство Type элемента parameters нельзя назначить из типа соответствующего параметра TDelegate.

Комментарии

Число параметров для типа TDelegate делегата должно равняться количеству элементов в parameters.

На элементы parameters должны быть ссылки, равные выражениям параметров в body.

Свойство Type результирующего объекта представляет тип TDelegate. Если parameters имеет значение null, Parameters свойство результирующего объекта является пустой коллекцией.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

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

Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs
Исходный код:
LambdaExpression.cs

Создает Expression<TDelegate>, в котором тип делегата известен во время компиляции, с параметром, указывающим, следует ли использовать оптимизацию вызовов с префиксом tail и перечисляемой коллекцией выражений параметров.

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

Параметры типа

TDelegate

Тип делегата.

Параметры

body
Expression

Объект Expression, который следует задать в качестве значения свойства Body.

tailCall
Boolean

Значение Boolean, которое указывает, следует ли использовать оптимизацию вызовов с префиксом tail при компиляции созданного выражения.

parameters
IEnumerable<ParameterExpression>

IEnumerable<T>, содержащий все объекты ParameterExpression, используемые для заполнения коллекции Parameters.

Возвращаемое значение

Выражение Expression<TDelegate>, содержащее свойство NodeType, равное Lambda, а также свойства Body и Parameters, для которых заданы указанные значения.

Применяется к

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0