Exemple #1
0
            private void BuildList(SelectClause.List list)
            {
                _underlyingSelect.AddRange(list.Columns);

                foreach (var(orderExpression, orderDirection) in _order.Columns)
                {
                    if (!TryUsingExistingColumn(list, orderExpression, orderDirection))
                    {
                        AddInternalColumn(orderExpression, orderDirection);
                    }
                }
            }
Exemple #2
0
            private bool TryUsingExistingColumn(SelectClause.List list, Expression orderExpression, OrderDirection orderDirection)
            {
                for (var i = 0; i < list.Columns.Count; i++)
                {
                    var selectColumn = list.Columns[i];
                    if (!selectColumn.Expression.Equals(orderExpression))
                    {
                        continue;
                    }

                    var columnName = GetProjectedColumnName(selectColumn, i);
                    var expr       = new Expression.Identifier(columnName, false);

                    _orderColumns.Add((expr, orderDirection));
                    return(true);
                }

                return(false);
            }