Example #1
0
        public string GetSelectValue <TResult>(QueryBuilder queryBuilder)
        {
            string result    = string.Empty;
            var    veiwModel = _context.EntityMaintenance.GetEntityInfo <TResult>();
            var    exp       = (queryBuilder.JoinExpression as LambdaExpression);
            List <KeyValuePair <string, JoinMapper> > selectItems = new List <KeyValuePair <string, JoinMapper> >();
            var exParsmeters = exp.Parameters.Select(it => new { shortName = it.Name, type = it.Type }).ToList();

            foreach (var viewColumns in veiwModel.Columns)
            {
                var isbreak = false;
                foreach (var expPars in exParsmeters)
                {
                    if (isbreak)
                    {
                        break;
                    }
                    var entityInfo = _context.EntityMaintenance.GetEntityInfo(expPars.type);
                    var columns    = entityInfo.Columns.Where(it => it.IsIgnore == false);
                    var list       = columns.Select(it => {
                        var array = new string[]
                        {
                            it.PropertyName,
                            it.DbColumnName,

                            expPars.type.Name + it.PropertyName,
                            expPars.type.Name + it.DbColumnName,

                            expPars.type.Name + "_" + it.PropertyName,
                            expPars.type.Name + "_" + it.DbColumnName,

                            expPars.shortName + it.PropertyName,
                            expPars.shortName + it.DbColumnName,
                        };
                        return(new { it, array });
                    }).ToList();
                    var columnInfo = list.FirstOrDefault(y => y.array.Select(z => z.ToLower()).Contains(viewColumns.PropertyName.ToLower()));
                    if (columnInfo != null)
                    {
                        JoinMapper joinMapper = new JoinMapper()
                        {
                            AsName = viewColumns.PropertyName,
                            DbName = columnInfo.it.DbColumnName
                        };
                        selectItems.Add(new KeyValuePair <string, JoinMapper>(expPars.shortName, joinMapper));
                        isbreak = true;
                    }
                }
            }
            result = queryBuilder.GetSelectByItems(selectItems);
            if (_context.CurrentConnectionConfig.DbType == DbType.PostgreSQL)
            {
                result = result.ToLower();
            }
            return(result);
        }
Example #2
0
        public virtual string GetSelectByItems(List <KeyValuePair <string, JoinMapper> > items)
        {
            var array = items.Select(it => {
                JoinMapper dynamicObj = it.Value;
                var dbName            = Builder.GetTranslationColumnName(dynamicObj.DbName);
                var asName            = Builder.GetTranslationColumnName(dynamicObj.AsName);
                return(string.Format("{0}.{1} AS {2}", it.Key, dbName, asName));
            });

            return(string.Join(",", array));
        }