private OrderByClause BuildNestedOrderBy(SelectExpression select, OrderByClause orderBy) { if (orderBy == null) return null; var newOrderBy = new OrderByClause(BuildNestedOrderBy(select, orderBy.SecondarySortingClause)); var columns = orderBy.SortColumns; var unmatchedColumns = new List<Expression>(); foreach (var col in columns) { Expression expr = select.TryFindColumn(col.Item1); if (expr == null) expr = select.AddUnmappedColumn(col.Item1); newOrderBy.AppendColumn(Tuple.Create(expr, col.Item2)); } return newOrderBy; }