/// <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); }
/// <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); }
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); }
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); }