Table of Contents

Struct VariantValue

Namespace
Apache.Arrow.Scalars.Variant
Assembly
Apache.Arrow.Scalars.dll

Represents a materialized variant value as a discriminated union. Preserves exact type information from the variant encoding.

public readonly struct VariantValue : IEquatable<VariantValue>
Implements
Inherited Members

Fields

False

The boolean false variant value.

public static readonly VariantValue False

Field Value

VariantValue

Null

The null variant value.

public static readonly VariantValue Null

Field Value

VariantValue

True

The boolean true variant value.

public static readonly VariantValue True

Field Value

VariantValue

Properties

IsArray

Returns true if this is an array value.

public bool IsArray { get; }

Property Value

bool

IsBoolean

Returns true if this is a boolean value.

public bool IsBoolean { get; }

Property Value

bool

IsNull

Returns true if this is a null value.

public bool IsNull { get; }

Property Value

bool

IsObject

Returns true if this is an object value.

public bool IsObject { get; }

Property Value

bool

IsString

Returns true if this is a string value.

public bool IsString { get; }

Property Value

bool

PrimitiveType

Gets the primitive type. For objects/arrays this is a sentinel value.

public VariantPrimitiveType PrimitiveType { get; }

Property Value

VariantPrimitiveType

Methods

AsArray()

Gets the array elements as a read-only list.

public IReadOnlyList<VariantValue> AsArray()

Returns

IReadOnlyList<VariantValue>

AsBinary()

Gets the binary value.

public byte[] AsBinary()

Returns

byte[]

AsBoolean()

Gets the boolean value.

public bool AsBoolean()

Returns

bool

AsDate()

Gets the Date as a DateTime.

public DateTime AsDate()

Returns

DateTime

AsDateDays()

Gets the Date value as days since epoch.

public int AsDateDays()

Returns

int

AsDecimal()

Gets a decimal value. Supported for Decimal4 and Decimal8 only. Decimal16 can hold 38-digit values that exceed decimal range, so use AsSqlDecimal() for Decimal16 instead.

public decimal AsDecimal()

Returns

decimal

AsDouble()

Gets the Double value.

public double AsDouble()

Returns

double

AsFloat()

Gets the Float value.

public float AsFloat()

Returns

float

AsInt16()

Gets the Int16 value.

public short AsInt16()

Returns

short

AsInt32()

Gets the Int32 value.

public int AsInt32()

Returns

int

AsInt64()

Gets the Int64 value.

public long AsInt64()

Returns

long

AsInt8()

Gets the Int8 value.

public sbyte AsInt8()

Returns

sbyte

AsObject()

Gets the object fields as a read-only dictionary.

public IReadOnlyDictionary<string, VariantValue> AsObject()

Returns

IReadOnlyDictionary<string, VariantValue>

AsSqlDecimal()

Gets a decimal value as a SqlDecimal. Works for Decimal4, Decimal8, and Decimal16 (including values that exceed decimal range).

public SqlDecimal AsSqlDecimal()

Returns

SqlDecimal

AsString()

Gets the string value.

public string AsString()

Returns

string

AsTimeNtzMicros()

Gets a TimeNtz value as microseconds since midnight.

public long AsTimeNtzMicros()

Returns

long

AsTimestamp()

Gets a Timestamp as a DateTimeOffset (UTC).

public DateTimeOffset AsTimestamp()

Returns

DateTimeOffset

AsTimestampMicros()

Gets a Timestamp value as microseconds since epoch.

public long AsTimestampMicros()

Returns

long

AsTimestampNtz()

Gets a TimestampNtz as a DateTime.

public DateTime AsTimestampNtz()

Returns

DateTime

AsTimestampNtzMicros()

Gets a TimestampNtz value as microseconds since epoch.

public long AsTimestampNtzMicros()

Returns

long

AsTimestampNtzNanos()

Gets a TimestampNtzNanos value as nanoseconds since epoch.

public long AsTimestampNtzNanos()

Returns

long

AsTimestampTzNanos()

Gets a TimestampTzNanos value as nanoseconds since epoch.

public long AsTimestampTzNanos()

Returns

long

AsUuid()

Gets the UUID value.

public Guid AsUuid()

Returns

Guid

Equals(VariantValue)

public bool Equals(VariantValue other)

Parameters

other VariantValue

Returns

bool

Equals(object)

public override bool Equals(object obj)

Parameters

obj object

Returns

bool

FromArray(params VariantValue[])

Creates an array variant value from params.

public static VariantValue FromArray(params VariantValue[] elements)

Parameters

elements VariantValue[]

Returns

VariantValue

FromArray(IList<VariantValue>)

Creates an array variant value from a list of elements.

public static VariantValue FromArray(IList<VariantValue> elements)

Parameters

elements IList<VariantValue>

Returns

VariantValue

FromBinary(byte[])

Creates a Binary variant value.

public static VariantValue FromBinary(byte[] value)

Parameters

value byte[]

Returns

VariantValue

FromBoolean(bool)

Creates a boolean variant value.

public static VariantValue FromBoolean(bool value)

Parameters

value bool

Returns

VariantValue

FromDate(DateTime)

Creates a Date variant value from a DateTime.

public static VariantValue FromDate(DateTime date)

Parameters

date DateTime

Returns

VariantValue

FromDate(int)

Creates a Date variant value from days since epoch.

public static VariantValue FromDate(int daysSinceEpoch)

Parameters

daysSinceEpoch int

Returns

VariantValue

FromDecimal(decimal)

Creates a decimal variant value, choosing the smallest decimal type that can represent the value (Decimal4, Decimal8, or Decimal16).

public static VariantValue FromDecimal(decimal value)

Parameters

value decimal

Returns

VariantValue

FromDecimal16(SqlDecimal)

Creates a Decimal16 variant value. Decimal16 covers the full Parquet 38-digit decimal range, which exceeds the decimal 96-bit mantissa, so the API uses SqlDecimal uniformly. Use FromSqlDecimal(SqlDecimal) when you want the smallest decimal type that fits the value.

public static VariantValue FromDecimal16(SqlDecimal value)

Parameters

value SqlDecimal

Returns

VariantValue

FromDecimal4(decimal)

Creates a Decimal4 variant value.

public static VariantValue FromDecimal4(decimal value)

Parameters

value decimal

Returns

VariantValue

FromDecimal8(decimal)

Creates a Decimal8 variant value.

public static VariantValue FromDecimal8(decimal value)

Parameters

value decimal

Returns

VariantValue

FromDouble(double)

Creates a Double variant value.

public static VariantValue FromDouble(double value)

Parameters

value double

Returns

VariantValue

FromFloat(float)

Creates a Float variant value.

public static VariantValue FromFloat(float value)

Parameters

value float

Returns

VariantValue

FromInt16(short)

Creates an Int16 variant value.

public static VariantValue FromInt16(short value)

Parameters

value short

Returns

VariantValue

FromInt32(int)

Creates an Int32 variant value.

public static VariantValue FromInt32(int value)

Parameters

value int

Returns

VariantValue

FromInt64(long)

Creates an Int64 variant value.

public static VariantValue FromInt64(long value)

Parameters

value long

Returns

VariantValue

FromInt8(sbyte)

Creates an Int8 variant value.

public static VariantValue FromInt8(sbyte value)

Parameters

value sbyte

Returns

VariantValue

FromObject(IDictionary<string, VariantValue>)

Creates an object variant value from a dictionary of field name to value.

public static VariantValue FromObject(IDictionary<string, VariantValue> fields)

Parameters

fields IDictionary<string, VariantValue>

Returns

VariantValue

FromSqlDecimal(SqlDecimal)

Creates a decimal variant value from a SqlDecimal, choosing the smallest decimal type that fits. Values exceeding decimal range produce a Decimal16.

public static VariantValue FromSqlDecimal(SqlDecimal value)

Parameters

value SqlDecimal

Returns

VariantValue

FromString(string)

Creates a String variant value.

public static VariantValue FromString(string value)

Parameters

value string

Returns

VariantValue

FromTimeNtz(long)

Creates a TimeNtz variant value from microseconds since midnight.

public static VariantValue FromTimeNtz(long microseconds)

Parameters

microseconds long

Returns

VariantValue

FromTimestamp(DateTimeOffset)

Creates a Timestamp variant value from a DateTimeOffset.

public static VariantValue FromTimestamp(DateTimeOffset value)

Parameters

value DateTimeOffset

Returns

VariantValue

FromTimestamp(long)

Creates a Timestamp variant value from microseconds since epoch (UTC).

public static VariantValue FromTimestamp(long microseconds)

Parameters

microseconds long

Returns

VariantValue

FromTimestampNtz(DateTime)

Creates a TimestampNtz variant value from a DateTime.

public static VariantValue FromTimestampNtz(DateTime value)

Parameters

value DateTime

Returns

VariantValue

FromTimestampNtz(long)

Creates a TimestampNtz variant value from microseconds since epoch.

public static VariantValue FromTimestampNtz(long microseconds)

Parameters

microseconds long

Returns

VariantValue

FromTimestampNtzNanos(long)

Creates a TimestampNtzNanos variant value from nanoseconds since epoch.

public static VariantValue FromTimestampNtzNanos(long nanoseconds)

Parameters

nanoseconds long

Returns

VariantValue

FromTimestampTzNanos(long)

Creates a TimestampTzNanos variant value from nanoseconds since epoch (UTC).

public static VariantValue FromTimestampTzNanos(long nanoseconds)

Parameters

nanoseconds long

Returns

VariantValue

FromUuid(Guid)

Creates a UUID variant value.

public static VariantValue FromUuid(Guid value)

Parameters

value Guid

Returns

VariantValue

GetHashCode()

public override int GetHashCode()

Returns

int

ToString()

public override string ToString()

Returns

string

Operators

operator ==(VariantValue, VariantValue)

Equality operator.

public static bool operator ==(VariantValue left, VariantValue right)

Parameters

left VariantValue
right VariantValue

Returns

bool

operator !=(VariantValue, VariantValue)

Inequality operator.

public static bool operator !=(VariantValue left, VariantValue right)

Parameters

left VariantValue
right VariantValue

Returns

bool