public static ICollection <SqlParameter> AddParameter <T>(
            this ICollection <SqlParameter> paramList,
            string paramName,
            SqlDbType type,
            T?value,
            Action <SqlParameter> configure = null
            ) where T : struct
        {
            if (paramList == null)
            {
                throw new ArgumentNullException(nameof(paramList));
            }

            if (paramList.IsReadOnly)
            {
                throw new InvalidOperationException(
                          "Cannot add parameters to a Read - Only Collection.");
            }

            var param = new SqlParameter(paramName, type);

            if (value.HasValue)
            {
                param.Value = value.Value;
            }
            else
            {
                param.Value = DBNull.Value;
            }

            configure?.Invoke(param);
            return(paramList.AddParameter(param));
        }
        public static ICollection <SqlParameter> AddParameter(
            this ICollection <SqlParameter> paramList,
            string paramName,
            SqlDbType type,
            object value,
            Action <SqlParameter> configure = null
            )
        {
            if (paramList == null)
            {
                throw new ArgumentNullException(nameof(paramList));
            }

            if (paramList.IsReadOnly)
            {
                throw new InvalidOperationException(
                          "Cannot add parameters to a Read - Only Collection.");
            }

            var param = new SqlParameter {
                ParameterName = paramName, SqlDbType = type, Value = value ?? DBNull.Value
            };

            configure?.Invoke(param);
            return(paramList.AddParameter(param));
        }
 public static ICollection <SqlParameter> AddDataTableParameter <T>(
     this ICollection <SqlParameter> paramList,
     string name,
     string sqlType,
     IEnumerable <T> items)
 {
     return(paramList.AddParameter(new SqlParameter(name, SqlDbType.Structured)
     {
         Value = items.ToDataTable(),
         TypeName = sqlType
     }));
 }