in csharp/src/Apache.Arrow.Adbc/Extensions/IArrowArrayExtensions.cs [388:453]
private static IList? CreateList(IArrowArray arrowArray)
{
if (arrowArray == null) throw new ArgumentNullException(nameof(arrowArray));
switch (arrowArray)
{
case BooleanArray booleanArray:
return new List<bool>();
case Date32Array date32Array:
case Date64Array date64Array:
return new List<DateTime>();
case Decimal128Array decimal128Array:
return new List<SqlDecimal>();
case Decimal256Array decimal256Array:
return new List<string>();
case DoubleArray doubleArray:
return new List<double>();
case FloatArray floatArray:
return new List<float>();
#if NET5_0_OR_GREATER
case PrimitiveArray<Half> halfFloatArray:
return new List<Half>();
#endif
case Int8Array int8Array:
return new List<sbyte>();
case Int16Array int16Array:
return new List<short>();
case Int32Array int32Array:
return new List<int>();
case Int64Array int64Array:
return new List<long>();
case StringArray stringArray:
return new List<string>();
#if NET6_0_OR_GREATER
case Time32Array time32Array:
case Time64Array time64Array:
return new List<TimeOnly>();
#else
case Time32Array time32Array:
case Time64Array time64Array:
return new List<TimeSpan>();
#endif
case TimestampArray timestampArray:
return new List<DateTimeOffset>();
case UInt8Array uInt8Array:
return new List<byte>();
case UInt16Array uInt16Array:
return new List<ushort>();
case UInt32Array uInt32Array:
return new List<uint>();
case UInt64Array uInt64Array:
return new List<ulong>();
case BinaryArray binaryArray:
return new List<byte>();
// not covered:
// -- struct array
// -- dictionary array
// -- fixed size binary
// -- list array
// -- union array
}
return null;
}