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 } };