/// <summary>
        /// 获取一个LinqDLRColumn的新实例
        /// </summary>
        /// <param name="dlrcolumntype"></param>
        /// <param name="columnexpress"></param>
        /// <param name="belongto"></param>
        /// <returns></returns>
        public static LinqDLRColumn New(Type dlrcolumntype, string columnexpress, object belongto)
        {
            LinqDLRColumn t = (LinqDLRColumn)Activator.CreateInstance(dlrcolumntype, true);

            t.ColumnExpress   = columnexpress;
            t.BelongToObject  = belongto;
            t.ConditionValues = new Dictionary <string, object>();
            return(t);
        }
        /// <summary>
        /// 获取一个LinqDLRColumn的新实例
        /// </summary>
        /// <param name="dlrcolumntype"></param>
        /// <param name="columnexpress"></param>
        /// <param name="belongto"></param>
        /// <param name="sqlflags"></param>
        /// <returns></returns>
        protected static LinqDLRColumn New(Type dlrcolumntype, string columnexpress, object belongto, SqlOperatorFlags sqlflags)
        {
            LinqDLRColumn t = (LinqDLRColumn)Activator.CreateInstance(dlrcolumntype, true);

            t.ColumnExpress   = columnexpress;
            t.BelongToObject  = belongto;
            t.ConditionValues = new Dictionary <string, object>();
            t.SqlFlags        = sqlflags;
            return(t);
        }
        /// <summary>
        /// 生成一个对象的的栏位表达式
        /// </summary>
        /// <param name="dlrcolumntype"></param>
        /// <param name="value"></param>
        /// <returns></returns>
        public static LinqDLRColumn NewObjectColumn(Type dlrcolumntype, object value)
        {
            if (value is LinqDLRColumn)
            {
                return((LinqDLRColumn)value);
            }

            LinqDLRColumn t = (LinqDLRColumn)Activator.CreateInstance(dlrcolumntype, true);

            t.ConditionValues = new Dictionary <string, object>();
            t.ColumnExpress   = t.Convert2Express(value);
            return(t);
        }
        /// <summary>
        /// 生成一个对象的的栏位表达式
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="value"></param>
        /// <param name="sqlflags"></param>
        /// <returns></returns>
        public static LinqDLRColumn New <T>(object value, SqlOperatorFlags sqlflags) where T : LinqDLRColumn
        {
            if (value is LinqDLRColumn)
            {
                return((LinqDLRColumn)value);
            }

            LinqDLRColumn t = (LinqDLRColumn)Activator.CreateInstance(typeof(T), true);

            t.ConditionValues = new Dictionary <string, object>();
            t.ColumnExpress   = t.Convert2Express(value);
            t.SqlFlags        = sqlflags;
            return(t);
        }
Exemplo n.º 5
0
        /// <summary>
        /// 将一个常量转化成LinqDLRColumn以便进行相关where操作
        /// </summary>
        /// <param name="args">只有一个参数</param>
        /// <returns></returns>
        protected virtual object ConvertConstaValueToLinqDLRColumn(object[] args)
        {
            if (args == null || args.Length <= 0)
            {
                return(null);
            }

            var pname = "" + Convert.ToInt64(ComFunc.RandomCode(6));
            var value = args[0];

            var tmp           = LinqDLRColumn.New <TColumn>("", null, SqlFlags);
            var columnexpress = $"{SqlFlags.ParamFlag}{pname}";
            var ldr           = LinqDLRColumn.New <TColumn>(columnexpress, this, SqlFlags);

            ldr.ConditionValues.Add(pname, value);
            tmp = null;
            return(ldr);
        }
Exemplo n.º 6
0
        protected override object GetMetaValue(string key)
        {
            //if (!columns.ContainsKey(key.ToLower()))
            //{
            //    var tmp = LinqDLRColumn.New<TColumn>("", this, SqlFlags);
            //    tmp.ColumnExpress = $"{(BelongToTable == "" ? "" : BelongToTable + ".")}{string.Format(SqlFlags.Column_Quatation,key)}";
            //    columns.Add(key.ToLower(), tmp);
            //}
            //return columns[key.ToLower()];


            var tmp = LinqDLRColumn.New <TColumn>("", this, SqlFlags);

            tmp.ColumnExpress = $"{(BelongToTable == "" ? "" : BelongToTable + ".")}{string.Format(SqlFlags.Column_Quatation, key)}";

            //columns.Add(key.ToLower(), tmp);
            return(tmp);
        }
Exemplo n.º 7
0
        protected virtual object Convert2FunctionExpress(object[] args)
        {
            if (args == null || args.Length <= 0)
            {
                return(null);
            }
            //第一个参数为string,为sql中function的名称,后面参数为function的参数
            var func_name    = ComFunc.nvl(args[0]);
            var express      = $"{func_name}(#args#)";
            var args_express = "";
            var tmp          = LinqDLRColumn.New <TColumn>("", null, SqlFlags);

            if (args.Length > 1)
            {
                for (var i = 1; i < args.Length; i++)
                {
                    var arg = args[i];
                    if (arg is LinqDLRColumn)
                    {
                        args_express += "," + tmp.Convert2Express(arg);
                    }
                    else if (arg is string)
                    {
                        args_express += $",'{arg}'";
                    }
                    else
                    {
                        args_express += $",{arg}";
                    }
                }
            }
            args_express      = args_express.Length > 0 ? args_express.Substring(1) : args_express;
            express           = express.Replace("#args#", args_express);
            tmp.ColumnExpress = express;

            return(tmp);
        }