コード例 #1
0
#pragma warning disable CA1822 // Mark members as static
        public DbDataReader UnpivotAsDataReader(object dataSource, string[] primaryColumns, string unpivotColumnName, Type unpivotColumnType,
#pragma warning restore CA1822 // Mark members as static
                                                string unpivotValueColumnName, Type unpivotValueType, UnpivotOptions options = null)
        {
            options ??= new UnpivotOptions();

            if (primaryColumns == null || primaryColumns.Length <= 0)
            {
                throw new ArgumentNullException(nameof(primaryColumns));
            }
            if (string.IsNullOrWhiteSpace(unpivotColumnName))
            {
                throw new ArgumentNullException(nameof(unpivotColumnName));
            }
            if (string.IsNullOrWhiteSpace(unpivotValueColumnName))
            {
                throw new ArgumentException(nameof(unpivotValueColumnName));
            }
            if (unpivotValueType == null)
            {
                throw new ArgumentNullException(nameof(unpivotValueType));
            }

            var reader = ScriptHostObject.GetDataSourceReader(dataSource,
                                                              new DataSourceParameters()
            {
                IgnoreErrors = options.IgnoreErrors, Columns = options.SelectColumns, SkipColumns = options.SkipColumns
            });

            if (reader == null)
            {
                throw new Exception("Input data are not provided.");
            }

            try
            {
                var readerParameters = new UnpivotDataReader.Parameters()
                {
                    DataSource             = reader,
                    PrimaryColumns         = primaryColumns,
                    IgnoreColumns          = options.IgnoreColumns,
                    IgnoreErrors           = options.IgnoreErrors,
                    UnPivotColumnName      = unpivotColumnName,
                    UnpivotColumnType      = unpivotColumnType,
                    UnPivotValueColumnName = unpivotValueColumnName,
                    UnPivotValueType       = unpivotValueType,
                    SkipValues             = options.SkipValues
                };

                var result = new UnpivotDataReader(readerParameters);
                return(result);
            }
            catch (Exception)
            {
                reader.Close();
                reader.Dispose();
                throw;
            }
        }
コード例 #2
0
        public DataTable Unpivot(object dataSource, string[] primaryColumns, string unpivotColumnName, Type unpivotColumnType,
                                 string unpivotValueColumnName, Type unpivotValueType, UnpivotOptions options = null)
        {
            using var reader = UnpivotAsDataReader(dataSource, primaryColumns, unpivotColumnName, unpivotColumnType,
                                                   unpivotValueColumnName, unpivotValueType, options);

            var tblResult = new DataTable("UnpivotData");

            tblResult.Load(reader);
            reader.Close();

            return(tblResult);
        }