internal SqlContainsTable(DataTable dataTable, SqlExpression searchCondition, ICollection <string> columnNames, ICollection <string> targetColumnNames, SqlExpression topNByRank)
            : base(string.Empty)
        {
            TargetTable     = SqlDml.TableRef(dataTable);
            SearchCondition = searchCondition;
            TopNByRank      = topNByRank;
            var targetColumnCount = targetColumnNames.Count;

            if (targetColumnCount == 0)
            {
                TargetColumns = new SqlTableColumnCollection(new List <SqlTableColumn>(1)
                {
                    Asterisk
                });
            }
            else
            {
                var targetColumns = new List <SqlTableColumn>(targetColumnCount);
                targetColumns.AddRange(targetColumnNames.Select(columnName => SqlDml.TableColumn(this, columnName)));
                TargetColumns = new SqlTableColumnCollection(targetColumns);
            }

            var columnList = new List <SqlTableColumn>(columnNames.Count);

            columnList.AddRange(columnNames.Select(columnName => SqlDml.TableColumn(this, columnName)));
            columns = new SqlTableColumnCollection(columnList);
        }
        // Constructor

        internal SqlJoinedTable(SqlJoinExpression joinExpression)
        {
            this.joinExpression = joinExpression;
            var joinedColumns = joinExpression.Left.Columns.Concat(joinExpression.Right.Columns).ToList();

            columns        = new SqlTableColumnCollection(joinedColumns);
            AliasedColumns = new SqlColumnCollection(columns.Cast <SqlColumn>().ToList());
        }
Пример #3
0
        internal SqlQueryRef(ISqlQueryExpression query, string name)
            : base(name)
        {
            this.query = query;
            var queryColumns = new List <SqlTableColumn>();

            foreach (var queryExpression in query)
            {
                var select = queryExpression as SqlSelect;
                if (select != null)
                {
                    var selectColumns = select.Columns.ToList();
                    select.Columns.Clear();
                    foreach (var originalColumn in selectColumns)
                    {
                        var column     = originalColumn;
                        var stubColumn = column as SqlColumnStub;
                        if (!ReferenceEquals(null, stubColumn))
                        {
                            column = stubColumn.Column;
                        }
                        var columnRef = column as SqlColumnRef;
                        if (!ReferenceEquals(null, columnRef))
                        {
                            stubColumn = columnRef.SqlColumn as SqlColumnStub;
                            if (!ReferenceEquals(null, stubColumn))
                            {
                                column = stubColumn.Column;
                            }
                        }
                        select.Columns.Add(column);
                        queryColumns.Add(SqlDml.TableColumn(this, originalColumn.Name));
                    }
                }

                var freeTextTable = queryExpression as SqlFreeTextTable;
                if (freeTextTable != null)
                {
                    foreach (var originalColumn in freeTextTable.Columns)
                    {
                        queryColumns.Add(SqlDml.TableColumn(this, originalColumn.Name));
                    }
                }

                var containsTable = queryExpression as SqlContainsTable;
                if (containsTable != null)
                {
                    foreach (var originalColumn in containsTable.Columns)
                    {
                        queryColumns.Add(SqlDml.TableColumn(this, originalColumn.Name));
                    }
                }

                break;
            }
            columns = new SqlTableColumnCollection(queryColumns);
        }
Пример #4
0
        internal SqlTableRef(DataTable dataTable, string name, params string[] columnNames)
            : base(name)
        {
            this.dataTable = dataTable;
            var tableColumns = columnNames.Length == 0
        ? dataTable.Columns.Select(c => SqlDml.TableColumn(this, c.Name)).ToList()
        : columnNames.Select(cn => SqlDml.TableColumn(this, cn)).ToList();

            columns = new SqlTableColumnCollection(tableColumns);
        }
Пример #5
0
        internal SqlTableRef(DataTable dataTable, string name)
            : this(dataTable, name, ArrayUtils <string> .EmptyArray)
        {
            this.dataTable = dataTable;
            var tableColumns = new List <SqlTableColumn>();

            foreach (DataTableColumn c in dataTable.Columns)
            {
                tableColumns.Add(SqlDml.TableColumn(this, c.Name));
            }
            columns = new SqlTableColumnCollection(tableColumns);
        }
Пример #6
0
        internal SqlQueryRef(ISqlQueryExpression query, string name)
            : base(name)
        {
            this.query = query;
            var queryColumns = new List <SqlTableColumn>();

            foreach (var queryExpression in query)
            {
                if (queryExpression is SqlSelect sqlSelect)
                {
                    var selectColumns = sqlSelect.Columns;
                    for (int index = 0, count = selectColumns.Count; index < count; index++)
                    {
                        var originalColumn = selectColumns[index];
                        var column         = originalColumn;
                        if (column is SqlColumnStub stubColumn)
                        {
                            column = stubColumn.Column;
                        }

                        if (column is SqlColumnRef columnRef)
                        {
                            stubColumn = columnRef.SqlColumn as SqlColumnStub;
                            if (!ReferenceEquals(null, stubColumn))
                            {
                                column = stubColumn.Column;
                            }
                        }

                        selectColumns[index] = column;
                        queryColumns.Add(SqlDml.TableColumn(this, originalColumn.Name));
                    }
                }

                if (queryExpression is SqlFreeTextTable freeTextTable)
                {
                    queryColumns.AddRange(
                        freeTextTable.Columns.Select(originalColumn => SqlDml.TableColumn(this, originalColumn.Name)));
                }

                if (queryExpression is SqlContainsTable containsTable)
                {
                    queryColumns.AddRange(
                        containsTable.Columns.Select(originalColumn => SqlDml.TableColumn(this, originalColumn.Name)));
                }

                break;
            }
            columns = new SqlTableColumnCollection(queryColumns);
        }
Пример #7
0
        internal SqlJoinedTable(SqlJoinExpression joinExpression, IReadOnlyList <SqlColumn> leftColumns, IReadOnlyList <SqlColumn> rightColumns)
        {
            this.joinExpression = joinExpression;
            var allLeftColumns  = joinExpression.Left.Columns;
            var allRightColumns = joinExpression.Right.Columns;

            var joinedColumns = new List <SqlTableColumn>(allLeftColumns.Count + allRightColumns.Count);

            joinedColumns.AddRange(allLeftColumns);
            joinedColumns.AddRange(allRightColumns);
            columns = new SqlTableColumnCollection(joinedColumns);

            var aliasedColumns = new List <SqlColumn>(leftColumns.Count + rightColumns.Count);

            aliasedColumns.AddRange(leftColumns);
            aliasedColumns.AddRange(rightColumns);
            AliasedColumns = new SqlColumnCollection(aliasedColumns);
        }
Пример #8
0
        internal SqlTableRef(DataTable dataTable, string name, params string[] columnNames)
            : base(name)
        {
            DataTable = dataTable;
            List <SqlTableColumn> tableColumns;

            if (columnNames.Length == 0)
            {
                tableColumns = new List <SqlTableColumn>(dataTable.Columns.Count);
                tableColumns.AddRange(dataTable.Columns.Select(column => SqlDml.TableColumn(this, column.Name)));
            }
            else
            {
                tableColumns = new List <SqlTableColumn>(columnNames.Length);
                tableColumns.AddRange(columnNames.Select(columnName => SqlDml.TableColumn(this, columnName)));
            }
            columns = new SqlTableColumnCollection(tableColumns);
        }
        internal SqlFreeTextTable(DataTable dataTable, SqlExpression freeText, IEnumerable <string> columnNames, ICollection <string> targetColumnNames, SqlExpression topNByRank)
            : base(string.Empty)
        {
            TargetTable = SqlDml.TableRef(dataTable);
            FreeText    = freeText;
            TopNByRank  = topNByRank;
            var targetColumns = new List <SqlTableColumn>();

            if (targetColumnNames.Count == 0)
            {
                targetColumns.Add(Asterisk);
            }
            else
            {
                targetColumns = targetColumnNames.Select(cn => SqlDml.TableColumn(this, cn)).ToList();
            }
            TargetColumns = new SqlTableColumnCollection(targetColumns);

            columns = new SqlTableColumnCollection(columnNames.Select(column => SqlDml.TableColumn(this, column)).ToList());
        }