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()); }
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); }
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); }
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); }
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); }
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); }
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()); }