# Expression.Coalesce Method

## Definition

Creates a BinaryExpression that represents a coalescing operation.

## Overloads

Coalesce(Expression, Expression, LambdaExpression) |
Creates a BinaryExpression that represents a coalescing operation, given a conversion function. |

Coalesce(Expression, Expression) |
Creates a BinaryExpression that represents a coalescing operation. |

## Coalesce(Expression, Expression, LambdaExpression)

Creates a BinaryExpression that represents a coalescing operation, given a conversion function.

```
public:
static System::Linq::Expressions::BinaryExpression ^ Coalesce(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right, System::Linq::Expressions::LambdaExpression ^ conversion);
```

`public static System.Linq.Expressions.BinaryExpression Coalesce (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right, System.Linq.Expressions.LambdaExpression conversion);`

`static member Coalesce : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression * System.Linq.Expressions.LambdaExpression -> System.Linq.Expressions.BinaryExpression`

`Public Shared Function Coalesce (left As Expression, right As Expression, conversion As LambdaExpression) As BinaryExpression`

#### Parameters

- left
- Expression

An Expression to set the Left property equal to.

- right
- Expression

An Expression to set the Right property equal to.

- conversion
- LambdaExpression

A LambdaExpression to set the Conversion property equal to.

#### Returns

A BinaryExpression that has the NodeType property equal to Coalesce and the Left, Right and Conversion properties set to the specified values.

#### Exceptions

`left`

or `right`

is `null`

.

`left`

.Type and `right`

.Type are not convertible to each other.

-or-

`conversion`

is not `null`

and `conversion`

.Type is a delegate type that does not take exactly one argument.

The Type property of `left`

does not represent a reference type or a nullable value type.

-or-

The Type property of `left`

represents a type that is not assignable to the parameter type of the delegate type `conversion`

.Type.

-or-

The Type property of `right`

is not equal to the return type of the delegate type `conversion`

.Type.

### Remarks

The Method property of the resulting BinaryExpression is `null`

and both IsLifted and IsLiftedToNull are set to `false`

.

The Type property of the resulting BinaryExpression is equal to the result type of the coalescing operation.

The following rules determine the result type:

If

`left`

.Type represents a nullable type and`right`

.Type is implicitly convertible to the corresponding non-nullable type, the result type is the non-nullable equivalent of`left`

.Type.Otherwise, if

`right`

.Type is implicitly convertible to`left`

.Type, the result type is`left`

.Type.Otherwise, if the non-nullable equivalent of

`left`

.Type is implicitly convertible to`right`

.Type, the result type is`right`

.Type.

## Coalesce(Expression, Expression)

Creates a BinaryExpression that represents a coalescing operation.

```
public:
static System::Linq::Expressions::BinaryExpression ^ Coalesce(System::Linq::Expressions::Expression ^ left, System::Linq::Expressions::Expression ^ right);
```

`public static System.Linq.Expressions.BinaryExpression Coalesce (System.Linq.Expressions.Expression left, System.Linq.Expressions.Expression right);`

`static member Coalesce : System.Linq.Expressions.Expression * System.Linq.Expressions.Expression -> System.Linq.Expressions.BinaryExpression`

`Public Shared Function Coalesce (left As Expression, right As Expression) As BinaryExpression`

#### Parameters

- left
- Expression

An Expression to set the Left property equal to.

- right
- Expression

An Expression to set the Right property equal to.

#### Returns

A BinaryExpression that has the NodeType property equal to Coalesce and the Left and Right properties set to the specified values.

#### Exceptions

`left`

or `right`

is `null`

.

The Type property of `left`

does not represent a reference type or a nullable value type.

`left`

.Type and `right`

.Type are not convertible to each other.

### Remarks

The Method property of the resulting BinaryExpression is `null`

and both IsLifted and IsLiftedToNull are set to `false`

. The Type property is equal to the result type of the coalescing operation. The Conversion property is `null`

.

#### Result Type

The following rules determine the result type:

If

`left`

.Type represents a nullable type and`right`

.Type is implicitly convertible to the corresponding non-nullable type, the result type is the non-nullable equivalent of`left`

.Type.Otherwise, if

`right`

.Type is implicitly convertible to`left`

.Type, the result type is`left`

.Type.Otherwise, if the non-nullable equivalent of

`left`

.Type is implicitly convertible to`right`

.Type, the result type is`right`

.Type.