Revenj.DatabasePersistence.Postgres.QueryGeneration.QueryComposition.QueryParts.FormatStringEnumerable C# (CSharp) Method

FormatStringEnumerable() private method

private FormatStringEnumerable ( object value, string name, Type type ) : string
value object
name string
type System.Type
return string
        private string FormatStringEnumerable(object value, string name, Type type)
        {
            if (value != null)
            {
                var array = ((IEnumerable)value).Cast<object>().ToArray();
                if (array.Length > 0)
                    return FormatStringValues(name, type, array);
            }
            if (value != null)
                type = value.GetType();
            var elementType = type.IsArray
                ? type.GetElementType()
                : type.IsGenericType
                    ? type.GetGenericArguments()[0]
                    : null;
            if (elementType == null)
                throw new NotSupportedException("Unknown source type: " + type.FullName);
            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));
        }