示例#1
0
        private List <string> ParseJoins(List <JoinModel> joins, long fromTableId)
        {
            var joinStrings = joins.Select(join =>
            {
                var joinToAlias = string.Empty;
                if (join.ToTable.Id != fromTableId && TablesAlias.ContainsKey(join.ToTable.Id))
                {
                    joinToAlias = TablesAlias[join.ToTable.Id];
                }
                else
                {
                    joinToAlias = GetTableAlias(TablesAlias.Count + 1);
                    TablesAlias.Add(join.ToTable.Id, joinToAlias);
                }
                var joinCondition     = ParseJoinCondition(join.JoinCondition, TablesAlias[fromTableId], joinToAlias);
                var lastJoinCondition = joinCondition.LastOrDefault();
                if (lastJoinCondition != null)
                {
                    var resultString = lastJoinCondition.Remove(lastJoinCondition.LastIndexOf(')') + 1);
                    joinCondition[joinCondition.Count - 1] = resultString;
                }
                return($"{ join.JoinType.ToString()} join {join.ToTable.ToString()} {joinToAlias} " +
                       $"on {string.Join(" ",joinCondition )} ");
            });

            return(joinStrings.ToList());
        }
示例#2
0
        public QueryConverter(List <TableDataModel> tables)
        {
            Tables = tables;
            int counter = 0;

            tables.ForEach(table => TablesAlias.Add(table.TableId, GetTableAlias(counter++)));
        }