private string FormatStringArray(object value, string name, Type type)
{
if (value != null)
{
var array = ((Array)value).Cast<object>().ToArray();
if (array.Length > 0)
return FormatStringValues(name, type, array);
}
if (value != null)
type = value.GetType();
var elementType = type.GetElementType();
if (NpgsqlTypes.TypeConverter.CanConvert(elementType))
return
"(SELECT * FROM unnest(array[]::{1}[]) AS \"{0}\") AS \"{0}\"".With(
name,
NpgsqlTypes.TypeConverter.GetTypeName(elementType));
return "(SELECT * FROM {1} LIMIT 0) AS \"{0}\"".With(name, FromSqlSource("sq", elementType));
}