# Class PgFunctionExpression

Namespace
  Npgsql.EntityFrameworkCore.PostgreSQL.Query.Expressions.Internal

Assembly
  Npgsql.EntityFrameworkCore.PostgreSQL.dll

Represents a SQL function call expression, supporting PostgreSQL's named parameter notation (e.g. make_interval(weeks => 2) and non-comma parameter separators (e.g. position(substring in string)).

    public class PgFunctionExpression : SqlFunctionExpression, IPrintableExpression, IEquatable<PgFunctionExpression>

Inheritance
  object
  Expression
  SqlExpression
  SqlFunctionExpression
  PgFunctionExpression

Implements
  IPrintableExpression
  IEquatable<PgFunctionExpression>

Inherited Members
  SqlFunctionExpression.Name
  SqlFunctionExpression.Schema
  SqlFunctionExpression.IsNiladic
  SqlFunctionExpression.IsBuiltIn
  SqlFunctionExpression.Instance
  SqlFunctionExpression.IsNullable
  SqlFunctionExpression.InstancePropagatesNullability
  SqlExpression.Type
  SqlExpression.TypeMapping
  SqlExpression.NodeType
  Expression.Accept(ExpressionVisitor)
  Expression.Add(Expression, Expression)
  Expression.Add(Expression, Expression, MethodInfo)
  Expression.AddAssign(Expression, Expression)
  Expression.AddAssign(Expression, Expression, MethodInfo)
  Expression.AddAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.AddAssignChecked(Expression, Expression)
  Expression.AddAssignChecked(Expression, Expression, MethodInfo)
  Expression.AddAssignChecked(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.AddChecked(Expression, Expression)
  Expression.AddChecked(Expression, Expression, MethodInfo)
  Expression.And(Expression, Expression)
  Expression.And(Expression, Expression, MethodInfo)
  Expression.AndAlso(Expression, Expression)
  Expression.AndAlso(Expression, Expression, MethodInfo)
  Expression.AndAssign(Expression, Expression)
  Expression.AndAssign(Expression, Expression, MethodInfo)
  Expression.AndAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.ArrayAccess(Expression, IEnumerable<Expression>)
  Expression.ArrayAccess(Expression, params Expression[])
  Expression.ArrayIndex(Expression, IEnumerable<Expression>)
  Expression.ArrayIndex(Expression, Expression)
  Expression.ArrayIndex(Expression, params Expression[])
  Expression.ArrayLength(Expression)
  Expression.Assign(Expression, Expression)
  Expression.Bind(MemberInfo, Expression)
  Expression.Bind(MethodInfo, Expression)
  Expression.Block(IEnumerable<Expression>)
  Expression.Block(IEnumerable<ParameterExpression>, IEnumerable<Expression>)
  Expression.Block(IEnumerable<ParameterExpression>, params Expression[])
  Expression.Block(Expression, Expression)
  Expression.Block(Expression, Expression, Expression)
  Expression.Block(Expression, Expression, Expression, Expression)
  Expression.Block(Expression, Expression, Expression, Expression, Expression)
  Expression.Block(params Expression[])
  Expression.Block(Type, IEnumerable<Expression>)
  Expression.Block(Type, IEnumerable<ParameterExpression>, IEnumerable<Expression>)
  Expression.Block(Type, IEnumerable<ParameterExpression>, params Expression[])
  Expression.Block(Type, params Expression[])
  Expression.Break(LabelTarget)
  Expression.Break(LabelTarget, Expression)
  Expression.Break(LabelTarget, Expression, Type)
  Expression.Break(LabelTarget, Type)
  Expression.Call(Expression, MethodInfo)
  Expression.Call(Expression, MethodInfo, IEnumerable<Expression>)
  Expression.Call(Expression, MethodInfo, Expression, Expression)
  Expression.Call(Expression, MethodInfo, Expression, Expression, Expression)
  Expression.Call(Expression, MethodInfo, params Expression[])
  Expression.Call(Expression, string, Type[], params Expression[])
  Expression.Call(MethodInfo, IEnumerable<Expression>)
  Expression.Call(MethodInfo, Expression)
  Expression.Call(MethodInfo, Expression, Expression)
  Expression.Call(MethodInfo, Expression, Expression, Expression)
  Expression.Call(MethodInfo, Expression, Expression, Expression, Expression)
  Expression.Call(MethodInfo, Expression, Expression, Expression, Expression, Expression)
  Expression.Call(MethodInfo, params Expression[])
  Expression.Call(Type, string, Type[], params Expression[])
  Expression.Catch(ParameterExpression, Expression)
  Expression.Catch(ParameterExpression, Expression, Expression)
  Expression.Catch(Type, Expression)
  Expression.Catch(Type, Expression, Expression)
  Expression.ClearDebugInfo(SymbolDocumentInfo)
  Expression.Coalesce(Expression, Expression)
  Expression.Coalesce(Expression, Expression, LambdaExpression)
  Expression.Condition(Expression, Expression, Expression)
  Expression.Condition(Expression, Expression, Expression, Type)
  Expression.Constant(object)
  Expression.Constant(object, Type)
  Expression.Continue(LabelTarget)
  Expression.Continue(LabelTarget, Type)
  Expression.Convert(Expression, Type)
  Expression.Convert(Expression, Type, MethodInfo)
  Expression.ConvertChecked(Expression, Type)
  Expression.ConvertChecked(Expression, Type, MethodInfo)
  Expression.DebugInfo(SymbolDocumentInfo, int, int, int, int)
  Expression.Decrement(Expression)
  Expression.Decrement(Expression, MethodInfo)
  Expression.Default(Type)
  Expression.Divide(Expression, Expression)
  Expression.Divide(Expression, Expression, MethodInfo)
  Expression.DivideAssign(Expression, Expression)
  Expression.DivideAssign(Expression, Expression, MethodInfo)
  Expression.DivideAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.Dynamic(CallSiteBinder, Type, IEnumerable<Expression>)
  Expression.Dynamic(CallSiteBinder, Type, Expression)
  Expression.Dynamic(CallSiteBinder, Type, Expression, Expression)
  Expression.Dynamic(CallSiteBinder, Type, Expression, Expression, Expression)
  Expression.Dynamic(CallSiteBinder, Type, Expression, Expression, Expression, Expression)
  Expression.Dynamic(CallSiteBinder, Type, params Expression[])
  Expression.ElementInit(MethodInfo, IEnumerable<Expression>)
  Expression.ElementInit(MethodInfo, params Expression[])
  Expression.Empty()
  Expression.Equal(Expression, Expression)
  Expression.Equal(Expression, Expression, bool, MethodInfo)
  Expression.ExclusiveOr(Expression, Expression)
  Expression.ExclusiveOr(Expression, Expression, MethodInfo)
  Expression.ExclusiveOrAssign(Expression, Expression)
  Expression.ExclusiveOrAssign(Expression, Expression, MethodInfo)
  Expression.ExclusiveOrAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.Field(Expression, FieldInfo)
  Expression.Field(Expression, string)
  Expression.Field(Expression, Type, string)
  Expression.GetActionType(params Type[])
  Expression.GetDelegateType(params Type[])
  Expression.GetFuncType(params Type[])
  Expression.Goto(LabelTarget)
  Expression.Goto(LabelTarget, Expression)
  Expression.Goto(LabelTarget, Expression, Type)
  Expression.Goto(LabelTarget, Type)
  Expression.GreaterThan(Expression, Expression)
  Expression.GreaterThan(Expression, Expression, bool, MethodInfo)
  Expression.GreaterThanOrEqual(Expression, Expression)
  Expression.GreaterThanOrEqual(Expression, Expression, bool, MethodInfo)
  Expression.IfThen(Expression, Expression)
  Expression.IfThenElse(Expression, Expression, Expression)
  Expression.Increment(Expression)
  Expression.Increment(Expression, MethodInfo)
  Expression.Invoke(Expression, IEnumerable<Expression>)
  Expression.Invoke(Expression, params Expression[])
  Expression.IsFalse(Expression)
  Expression.IsFalse(Expression, MethodInfo)
  Expression.IsTrue(Expression)
  Expression.IsTrue(Expression, MethodInfo)
  Expression.Label()
  Expression.Label(LabelTarget)
  Expression.Label(LabelTarget, Expression)
  Expression.Label(string)
  Expression.Label(Type)
  Expression.Label(Type, string)
  Expression.Lambda(Expression, bool, IEnumerable<ParameterExpression>)
  Expression.Lambda(Expression, bool, params ParameterExpression[])
  Expression.Lambda(Expression, IEnumerable<ParameterExpression>)
  Expression.Lambda(Expression, params ParameterExpression[])
  Expression.Lambda(Expression, string, bool, IEnumerable<ParameterExpression>)
  Expression.Lambda(Expression, string, IEnumerable<ParameterExpression>)
  Expression.Lambda(Type, Expression, bool, IEnumerable<ParameterExpression>)
  Expression.Lambda(Type, Expression, bool, params ParameterExpression[])
  Expression.Lambda(Type, Expression, IEnumerable<ParameterExpression>)
  Expression.Lambda(Type, Expression, params ParameterExpression[])
  Expression.Lambda(Type, Expression, string, bool, IEnumerable<ParameterExpression>)
  Expression.Lambda(Type, Expression, string, IEnumerable<ParameterExpression>)
  Expression.Lambda<TDelegate>(Expression, bool, IEnumerable<ParameterExpression>)
  Expression.Lambda<TDelegate>(Expression, bool, params ParameterExpression[])
  Expression.Lambda<TDelegate>(Expression, IEnumerable<ParameterExpression>)
  Expression.Lambda<TDelegate>(Expression, params ParameterExpression[])
  Expression.Lambda<TDelegate>(Expression, string, bool, IEnumerable<ParameterExpression>)
  Expression.Lambda<TDelegate>(Expression, string, IEnumerable<ParameterExpression>)
  Expression.LeftShift(Expression, Expression)
  Expression.LeftShift(Expression, Expression, MethodInfo)
  Expression.LeftShiftAssign(Expression, Expression)
  Expression.LeftShiftAssign(Expression, Expression, MethodInfo)
  Expression.LeftShiftAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.LessThan(Expression, Expression)
  Expression.LessThan(Expression, Expression, bool, MethodInfo)
  Expression.LessThanOrEqual(Expression, Expression)
  Expression.LessThanOrEqual(Expression, Expression, bool, MethodInfo)
  Expression.ListBind(MemberInfo, IEnumerable<ElementInit>)
  Expression.ListBind(MemberInfo, params ElementInit[])
  Expression.ListBind(MethodInfo, IEnumerable<ElementInit>)
  Expression.ListBind(MethodInfo, params ElementInit[])
  Expression.ListInit(NewExpression, IEnumerable<ElementInit>)
  Expression.ListInit(NewExpression, IEnumerable<Expression>)
  Expression.ListInit(NewExpression, params ElementInit[])
  Expression.ListInit(NewExpression, params Expression[])
  Expression.ListInit(NewExpression, MethodInfo, IEnumerable<Expression>)
  Expression.ListInit(NewExpression, MethodInfo, params Expression[])
  Expression.Loop(Expression)
  Expression.Loop(Expression, LabelTarget)
  Expression.Loop(Expression, LabelTarget, LabelTarget)
  Expression.MakeBinary(ExpressionType, Expression, Expression)
  Expression.MakeBinary(ExpressionType, Expression, Expression, bool, MethodInfo)
  Expression.MakeBinary(ExpressionType, Expression, Expression, bool, MethodInfo, LambdaExpression)
  Expression.MakeCatchBlock(Type, ParameterExpression, Expression, Expression)
  Expression.MakeDynamic(Type, CallSiteBinder, IEnumerable<Expression>)
  Expression.MakeDynamic(Type, CallSiteBinder, Expression)
  Expression.MakeDynamic(Type, CallSiteBinder, Expression, Expression)
  Expression.MakeDynamic(Type, CallSiteBinder, Expression, Expression, Expression)
  Expression.MakeDynamic(Type, CallSiteBinder, Expression, Expression, Expression, Expression)
  Expression.MakeDynamic(Type, CallSiteBinder, params Expression[])
  Expression.MakeGoto(GotoExpressionKind, LabelTarget, Expression, Type)
  Expression.MakeIndex(Expression, PropertyInfo, IEnumerable<Expression>)
  Expression.MakeMemberAccess(Expression, MemberInfo)
  Expression.MakeTry(Type, Expression, Expression, Expression, IEnumerable<CatchBlock>)
  Expression.MakeUnary(ExpressionType, Expression, Type)
  Expression.MakeUnary(ExpressionType, Expression, Type, MethodInfo)
  Expression.MemberBind(MemberInfo, IEnumerable<MemberBinding>)
  Expression.MemberBind(MemberInfo, params MemberBinding[])
  Expression.MemberBind(MethodInfo, IEnumerable<MemberBinding>)
  Expression.MemberBind(MethodInfo, params MemberBinding[])
  Expression.MemberInit(NewExpression, IEnumerable<MemberBinding>)
  Expression.MemberInit(NewExpression, params MemberBinding[])
  Expression.Modulo(Expression, Expression)
  Expression.Modulo(Expression, Expression, MethodInfo)
  Expression.ModuloAssign(Expression, Expression)
  Expression.ModuloAssign(Expression, Expression, MethodInfo)
  Expression.ModuloAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.Multiply(Expression, Expression)
  Expression.Multiply(Expression, Expression, MethodInfo)
  Expression.MultiplyAssign(Expression, Expression)
  Expression.MultiplyAssign(Expression, Expression, MethodInfo)
  Expression.MultiplyAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.MultiplyAssignChecked(Expression, Expression)
  Expression.MultiplyAssignChecked(Expression, Expression, MethodInfo)
  Expression.MultiplyAssignChecked(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.MultiplyChecked(Expression, Expression)
  Expression.MultiplyChecked(Expression, Expression, MethodInfo)
  Expression.Negate(Expression)
  Expression.Negate(Expression, MethodInfo)
  Expression.NegateChecked(Expression)
  Expression.NegateChecked(Expression, MethodInfo)
  Expression.New(ConstructorInfo)
  Expression.New(ConstructorInfo, IEnumerable<Expression>)
  Expression.New(ConstructorInfo, IEnumerable<Expression>, IEnumerable<MemberInfo>)
  Expression.New(ConstructorInfo, IEnumerable<Expression>, params MemberInfo[])
  Expression.New(ConstructorInfo, params Expression[])
  Expression.New(Type)
  Expression.NewArrayBounds(Type, IEnumerable<Expression>)
  Expression.NewArrayBounds(Type, params Expression[])
  Expression.NewArrayInit(Type, IEnumerable<Expression>)
  Expression.NewArrayInit(Type, params Expression[])
  Expression.Not(Expression)
  Expression.Not(Expression, MethodInfo)
  Expression.NotEqual(Expression, Expression)
  Expression.NotEqual(Expression, Expression, bool, MethodInfo)
  Expression.OnesComplement(Expression)
  Expression.OnesComplement(Expression, MethodInfo)
  Expression.Or(Expression, Expression)
  Expression.Or(Expression, Expression, MethodInfo)
  Expression.OrAssign(Expression, Expression)
  Expression.OrAssign(Expression, Expression, MethodInfo)
  Expression.OrAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.OrElse(Expression, Expression)
  Expression.OrElse(Expression, Expression, MethodInfo)
  Expression.Parameter(Type)
  Expression.Parameter(Type, string)
  Expression.PostDecrementAssign(Expression)
  Expression.PostDecrementAssign(Expression, MethodInfo)
  Expression.PostIncrementAssign(Expression)
  Expression.PostIncrementAssign(Expression, MethodInfo)
  Expression.Power(Expression, Expression)
  Expression.Power(Expression, Expression, MethodInfo)
  Expression.PowerAssign(Expression, Expression)
  Expression.PowerAssign(Expression, Expression, MethodInfo)
  Expression.PowerAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.PreDecrementAssign(Expression)
  Expression.PreDecrementAssign(Expression, MethodInfo)
  Expression.PreIncrementAssign(Expression)
  Expression.PreIncrementAssign(Expression, MethodInfo)
  Expression.Property(Expression, MethodInfo)
  Expression.Property(Expression, PropertyInfo)
  Expression.Property(Expression, PropertyInfo, IEnumerable<Expression>)
  Expression.Property(Expression, PropertyInfo, params Expression[])
  Expression.Property(Expression, string)
  Expression.Property(Expression, string, params Expression[])
  Expression.Property(Expression, Type, string)
  Expression.PropertyOrField(Expression, string)
  Expression.Quote(Expression)
  Expression.Reduce()
  Expression.ReduceAndCheck()
  Expression.ReduceExtensions()
  Expression.ReferenceEqual(Expression, Expression)
  Expression.ReferenceNotEqual(Expression, Expression)
  Expression.Rethrow()
  Expression.Rethrow(Type)
  Expression.Return(LabelTarget)
  Expression.Return(LabelTarget, Expression)
  Expression.Return(LabelTarget, Expression, Type)
  Expression.Return(LabelTarget, Type)
  Expression.RightShift(Expression, Expression)
  Expression.RightShift(Expression, Expression, MethodInfo)
  Expression.RightShiftAssign(Expression, Expression)
  Expression.RightShiftAssign(Expression, Expression, MethodInfo)
  Expression.RightShiftAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.RuntimeVariables(IEnumerable<ParameterExpression>)
  Expression.RuntimeVariables(params ParameterExpression[])
  Expression.Subtract(Expression, Expression)
  Expression.Subtract(Expression, Expression, MethodInfo)
  Expression.SubtractAssign(Expression, Expression)
  Expression.SubtractAssign(Expression, Expression, MethodInfo)
  Expression.SubtractAssign(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.SubtractAssignChecked(Expression, Expression)
  Expression.SubtractAssignChecked(Expression, Expression, MethodInfo)
  Expression.SubtractAssignChecked(Expression, Expression, MethodInfo, LambdaExpression)
  Expression.SubtractChecked(Expression, Expression)
  Expression.SubtractChecked(Expression, Expression, MethodInfo)
  Expression.Switch(Expression, Expression, params SwitchCase[])
  Expression.Switch(Expression, Expression, MethodInfo, IEnumerable<SwitchCase>)
  Expression.Switch(Expression, Expression, MethodInfo, params SwitchCase[])
  Expression.Switch(Expression, params SwitchCase[])
  Expression.Switch(Type, Expression, Expression, MethodInfo, IEnumerable<SwitchCase>)
  Expression.Switch(Type, Expression, Expression, MethodInfo, params SwitchCase[])
  Expression.SwitchCase(Expression, IEnumerable<Expression>)
  Expression.SwitchCase(Expression, params Expression[])
  Expression.SymbolDocument(string)
  Expression.SymbolDocument(string, Guid)
  Expression.SymbolDocument(string, Guid, Guid)
  Expression.SymbolDocument(string, Guid, Guid, Guid)
  Expression.Throw(Expression)
  Expression.Throw(Expression, Type)
  Expression.ToString()
  Expression.TryCatch(Expression, params CatchBlock[])
  Expression.TryCatchFinally(Expression, Expression, params CatchBlock[])
  Expression.TryFault(Expression, Expression)
  Expression.TryFinally(Expression, Expression)
  Expression.TryGetActionType(Type[], out Type)
  Expression.TryGetFuncType(Type[], out Type)
  Expression.TypeAs(Expression, Type)
  Expression.TypeEqual(Expression, Type)
  Expression.TypeIs(Expression, Type)
  Expression.UnaryPlus(Expression)
  Expression.UnaryPlus(Expression, MethodInfo)
  Expression.Unbox(Expression, Type)
  Expression.Variable(Type)
  Expression.Variable(Type, string)
  Expression.CanReduce
  object.Equals(object, object)
  object.GetType()
  object.MemberwiseClone()
  object.ReferenceEquals(object, object)

## Constructors

### PgFunctionExpression(string, IEnumerable<SqlExpression>, IEnumerable<string?>?, IEnumerable<string?>?, bool, SqlExpression?, IReadOnlyList<OrderingExpression>, bool, IEnumerable<bool>, Type, RelationalTypeMapping?)

Creates a new instance of PgFunctionExpression.

    public PgFunctionExpression(string name, IEnumerable<SqlExpression> arguments, IEnumerable<string?>? argumentNames, IEnumerable<string?>? argumentSeparators, bool aggregateDistinct, SqlExpression? aggregatePredicate, IReadOnlyList<OrderingExpression> aggregateOrderings, bool nullable, IEnumerable<bool> argumentsPropagateNullability, Type type, RelationalTypeMapping? typeMapping)

#### Parameters

`name` string
`arguments` IEnumerable<SqlExpression>
`argumentNames` IEnumerable<string>
`argumentSeparators` IEnumerable<string>
`aggregateDistinct` bool
`aggregatePredicate` SqlExpression
`aggregateOrderings` IReadOnlyList<OrderingExpression>
`nullable` bool
`argumentsPropagateNullability` IEnumerable<bool>
`type` Type
`typeMapping` RelationalTypeMapping

## Properties

### AggregateOrderings

For aggregate methods, contains the orderings to be applied.

    public virtual IReadOnlyList<OrderingExpression> AggregateOrderings { get; }

#### Property Value

IReadOnlyList<OrderingExpression>

### AggregatePredicate

For aggregate methods, contains the predicate to be applied (generated as the SQL FILTER clause).

    public virtual SqlExpression? AggregatePredicate { get; }

#### Property Value

SqlExpression

### ArgumentNames

List of argument names, corresponding position-wise to arguments in Arguments. Unnamed (positional) arguments must come first, so this list must contain possible nulls, followed by non-nulls.

    public virtual IReadOnlyList<string?> ArgumentNames { get; }

#### Property Value

IReadOnlyList<string>

### ArgumentSeparators

List of non-comma separators between argument separators, in the order in which they appear between the arguments. `null` as well as positions beyond the end of the list mean regular commas.

    public virtual IReadOnlyList<string?> ArgumentSeparators { get; }

#### Property Value

IReadOnlyList<string>

### Arguments

    public virtual IReadOnlyList<SqlExpression> Arguments { get; }

#### Property Value

IReadOnlyList<SqlExpression>

### ArgumentsPropagateNullability

    public virtual IReadOnlyList<bool> ArgumentsPropagateNullability { get; }

#### Property Value

IReadOnlyList<bool>

### IsAggregateDistinct

For aggregate methods, contains whether to apply distinct.

    public virtual bool IsAggregateDistinct { get; }

#### Property Value

bool

## Methods

### ApplyTypeMapping(RelationalTypeMapping?)

Applies supplied type mapping to this expression.

    public override SqlFunctionExpression ApplyTypeMapping(RelationalTypeMapping? typeMapping)

#### Parameters

`typeMapping` RelationalTypeMapping

  A relational type mapping to apply.

#### Returns

SqlFunctionExpression

  A new expression which has supplied type mapping.

### CreateWithArgumentSeparators(string, IEnumerable<SqlExpression>, IEnumerable<string?>, bool, IEnumerable<bool>, bool, Type, RelationalTypeMapping?)

Creates an instance of PgFunctionExpression with argument separators.

    public static PgFunctionExpression CreateWithArgumentSeparators(string name, IEnumerable<SqlExpression> arguments, IEnumerable<string?> argumentSeparators, bool nullable, IEnumerable<bool> argumentsPropagateNullability, bool builtIn, Type type, RelationalTypeMapping? typeMapping)

#### Parameters

`name` string
`arguments` IEnumerable<SqlExpression>
`argumentSeparators` IEnumerable<string>
`nullable` bool
`argumentsPropagateNullability` IEnumerable<bool>
`builtIn` bool
`type` Type
`typeMapping` RelationalTypeMapping

#### Returns

PgFunctionExpression

### CreateWithNamedArguments(string, IEnumerable<SqlExpression>, IEnumerable<string?>, bool, IEnumerable<bool>, bool, Type, RelationalTypeMapping?)

Creates an instance of PgFunctionExpression with named arguments.

    public static PgFunctionExpression CreateWithNamedArguments(string name, IEnumerable<SqlExpression> arguments, IEnumerable<string?> argumentNames, bool nullable, IEnumerable<bool> argumentsPropagateNullability, bool builtIn, Type type, RelationalTypeMapping? typeMapping)

#### Parameters

`name` string
`arguments` IEnumerable<SqlExpression>
`argumentNames` IEnumerable<string>
`nullable` bool
`argumentsPropagateNullability` IEnumerable<bool>
`builtIn` bool
`type` Type
`typeMapping` RelationalTypeMapping

#### Returns

PgFunctionExpression

### Equals(PgFunctionExpression?)

Indicates whether the current object is equal to another object of the same type.

    public virtual bool Equals(PgFunctionExpression? other)

#### Parameters

`other` PgFunctionExpression

  An object to compare with this object.

#### Returns

bool

  true if the current object is equal to the `other` parameter; otherwise, false.

### Equals(object?)

Determines whether the specified object is equal to the current object.

    public override bool Equals(object? obj)

#### Parameters

`obj` object

  The object to compare with the current object.

#### Returns

bool

  true if the specified object is equal to the current object; otherwise, false.

### GetHashCode()

Serves as the default hash function.

    public override int GetHashCode()

#### Returns

int

  A hash code for the current object.

### Print(ExpressionPrinter)

Creates a printable string representation of the given expression using ExpressionPrinter.

    protected override void Print(ExpressionPrinter expressionPrinter)

#### Parameters

`expressionPrinter` ExpressionPrinter

  The expression printer to use.

### Update(SqlExpression?, IReadOnlyList<SqlExpression>?)

Creates a new expression that is like this one, but using the supplied children. If all of the children are the same, it will return this expression.

    public override SqlFunctionExpression Update(SqlExpression? instance, IReadOnlyList<SqlExpression>? arguments)

#### Parameters

`instance` SqlExpression

  The Instance property of the result.

`arguments` IReadOnlyList<SqlExpression>

  The Arguments property of the result.

#### Returns

SqlFunctionExpression

  This expression if no children changed, or an expression with the updated children.

### UpdateAggregateComponents(SqlExpression?, IReadOnlyList<OrderingExpression>)

Creates a new expression that is like this one, but using the supplied children. If all of the children are the same, it will return this expression.

    public virtual PgFunctionExpression UpdateAggregateComponents(SqlExpression? predicate, IReadOnlyList<OrderingExpression> orderings)

#### Parameters

`predicate` SqlExpression
`orderings` IReadOnlyList<OrderingExpression>

#### Returns

PgFunctionExpression

### VisitChildren(ExpressionVisitor)

Reduces the node and then calls the visitor delegate on the reduced expression. The method throws an exception if the node is not reducible.

    protected override Expression VisitChildren(ExpressionVisitor visitor)

#### Parameters

`visitor` ExpressionVisitor

  An instance of Func<T, TResult>.

#### Returns

Expression

  The expression being visited, or an expression which should replace it in the tree.