private static QueryParameter PopulateArrayParameter(QueryParameter parameter, object value, BigQueryDbType?arrayType)
        {
            if (value == null)
            {
                throw new InvalidOperationException("The value of an array parameter cannot be null");
            }
            if (!IsArrayValue(value))
            {
                throw new InvalidOperationException($"Invalid value for array parameter: {value.GetType()}");
            }
            List <object> values = ((IEnumerable)value).Cast <object>().ToList();

            if (values.Any(v => v == null))
            {
                throw new InvalidOperationException("Array parameter values cannot contain null elements");
            }
            BigQueryDbType actualArrayType = arrayType ?? s_typeMapping[GetArrayElementType(value)];

            parameter.ParameterType = new QueryParameterType
            {
                Type      = BigQueryDbType.Array.ToParameterApiType(),
                ArrayType = new QueryParameterType {
                    Type = actualArrayType.ToParameterApiType()
                }
            };
            var parameterValues = values
                                  .Select(p => new BigQueryParameter(actualArrayType, p).ToQueryParameter().ParameterValue)
                                  .ToList();

            parameter.ParameterValue = new QueryParameterValue {
                ArrayValues = parameterValues
            };
            return(parameter);
        }
 private static QueryParameter ScalarParameter(BigQueryDbType type, string value) =>
 new QueryParameter
 {
     ParameterType = new QueryParameterType {
         Type = type.ToParameterApiType()
     },
     ParameterValue = new QueryParameterValue {
         Value = value
     }
 };