/// <summary> /// clone一個DataRow /// </summary> /// <param name="rowindex"></param> /// <param name="todt"></param> public void CloneDataRow(int rowindex, ref DataTableStd todt) { if (todt.data.Count > rowindex) { todt.data.Add((FrameDLRObject)this.data[rowindex].Clone()); } }
/// <summary> /// 复制本表的结构 /// </summary> /// <returns></returns> public DataTableStd CloneStd() { DataTableStd rtn = DataTableStd.ParseStd(this.Value.Copy()); rtn.Value.Rows.Clear(); return(rtn); }
public DataTableStd this[int index] { get { return(DataTableStd.ParseStd(this.Tables[index])); } }
/// <summary> /// 复制本表的结构 /// </summary> /// <returns></returns> public DataTableStd CloneStd() { DataTableStd rtn = new DataTableStd(); foreach (var item in pkContent) { rtn.pkContent.Add(new DataColumn() { AllowDBNull = item.AllowDBNull, AutoIncrement = item.AutoIncrement, AutoIncrementSeed = item.AutoIncrementSeed, AutoIncrementStep = item.AutoIncrementStep, Caption = item.Caption, ColumnMapping = item.ColumnMapping, ColumnName = item.ColumnName, DataType = item.DataType, DateTimeMode = item.DateTimeMode, DefaultValue = item.DefaultValue, Expression = item.Expression, MaxLength = item.MaxLength, Namespace = item.Namespace, Prefix = item.Prefix, ReadOnly = item.ReadOnly, Site = item.Site, Unique = item.Unique }); } foreach (var item in schema) { rtn.schema.Add(new DataColumn() { AllowDBNull = item.AllowDBNull, AutoIncrement = item.AutoIncrement, AutoIncrementSeed = item.AutoIncrementSeed, AutoIncrementStep = item.AutoIncrementStep, Caption = item.Caption, ColumnMapping = item.ColumnMapping, ColumnName = item.ColumnName, DataType = item.DataType, DateTimeMode = item.DateTimeMode, DefaultValue = item.DefaultValue, Expression = item.Expression, MaxLength = item.MaxLength, Namespace = item.Namespace, Prefix = item.Prefix, ReadOnly = item.ReadOnly, Site = item.Site, Unique = item.Unique }); } foreach (var item in data) { rtn.data.Add((FrameDLRObject)item.Clone()); } return(rtn); }
/// <summary> /// clone一個DataRow /// </summary> /// <param name="rowindex"></param> /// <param name="todt"></param> public void CloneDataRow(int rowindex, ref DataTableStd todt) { DataRow rtn = todt.Value.NewRow(); foreach (DataColumn dc in this.Value.Columns) { object v = GetValue(dc.ColumnName, rowindex); rtn[dc.ColumnName] = v == null ? DBNull.Value : v; } todt.Value.Rows.Add(rtn); }
/// <summary> /// 根據指定columns转化成标准类型 /// </summary> /// <param name="columns"></param> /// <returns></returns> public static DataTableStd ParseStd(string[] columns) { DataTableStd dt = new DataTableStd(); for (int i = 0; i < columns.Length; i++) { dt.schema.Add(new DataColumn(columns[i])); } return(dt); }
public override object Clone() { DataTableStd rtn = (DataTableStd)base.Clone(); foreach (var s in this.pkContent) { rtn.pkContent.Add(s); } return(rtn); }
/// <summary> /// 根據指定column个数转化成标准类型 /// </summary> /// <param name="columnCount"></param> /// <returns></returns> public static DataTableStd ParseStd(int columnCount) { DataTableStd dt = new DataTableStd(); for (int i = 0; i < columnCount; i++) { dt.schema.Add(new DataColumn("F" + i)); } return(dt); }
/// <summary> /// 转化成标准类型 /// </summary> /// <param name="o"></param> /// <returns></returns> public static DataTableStd ParseStd(DataTable o) { if (o == null) { return(null); } else { DataTableStd dts = new DataTableStd(); dts.Value = o; return(dts); } }
/// <summary> /// 根据columnIndex和rowIndex获取指定table中的值 /// </summary> /// <param name="tableIndex"></param> /// <param name="columnIndex"></param> /// <param name="rowIndex"></param> /// <returns></returns> public object GetValue(int tableIndex, int columnIndex, int rowIndex) { if (this == null) { return(""); } else if (tableIndex >= this.Tables.Count) { return(""); } else { return(DataTableStd.ParseStd(this.Tables[tableIndex]).GetValue(columnIndex, rowIndex)); } }
/// <summary> /// 根據条件表达式找出需要的数据并返回 /// </summary> /// <param name="filterExpresstion"></param> /// <param name="sort"></param> /// <returns></returns> public DataTableStd SelectByWhere(string filterExpresstion, string sort) { DataRow[] drs = this.Value.Select(filterExpresstion, sort); DataTableStd rtn = this.CloneStd(); foreach (DataRow dr in drs) { foreach (string colname in this.ColumnNames) { rtn.SetNewRowValue(dr[colname], colname); } rtn.AddNewRow(); } return(rtn); }
/// <summary> /// Clone /// </summary> /// <returns></returns> public object Clone() { var rtn = new DataTableStd(); foreach (var s in this.pkContent) { rtn.pkContent.Add(s); } foreach (var item in this.data) { rtn.data.Add((FrameDLRObject)item.Clone()); } return(rtn); }
/// <summary> /// 根据过滤条件获得指定栏位的值,如果过滤条件不够精确导致得到的结果过多,将抛出异常 /// </summary> /// <param name="tableIndex"></param> /// <param name="columnName"></param> /// <param name="filterExpression"></param> /// <returns></returns> public object GetValueByWhere(int tableIndex, string columnName, string filterExpression) { if (this == null) { return(""); } else if (tableIndex >= this.Tables.Count) { return(""); } else { return(DataTableStd.ParseStd(this.Tables[tableIndex]).GetValueByWhere(columnName, filterExpression)); } }
/// <summary> /// 从游标中填充数据。用于协助没有提供DataAdapter的驱动使用 /// </summary> /// <param name="ddr"></param> /// <returns></returns> public static DataSetStd FillData(DbDataReader ddr) { var rtn = new DataSetStd(); if (ddr != null) { var index = 0; do { var dt = DataTableStd.ParseStd(ddr); rtn._tables.Add(dt); } while (ddr.NextResult()); } return(rtn); }
/// <summary> /// 转化成标准类型 /// </summary> /// <param name="o"></param> /// <returns></returns> public static DataTableStd ParseStd(DataTable o) { if (o == null) { return(null); } else { DataTableStd dts = new DataTableStd(); foreach (DataColumn c in o.Columns) { dts.AddColumn(c, o.PrimaryKey.Contains(c)); } return(dts); } }
/// <summary> /// 将from表中的数据写入到本表中,按照欄位名稱对应,Append方式 /// </summary> /// <param name="from"></param> public void SetValueApppend_From(DataTableStd from) { for (int i = 0; i < from.RowLength; i++) { foreach (var dc in from.schema) { var mycolumn = this.schema.Where(w => w.ColumnName.ToLower() == dc.ColumnName.ToLower()).First(); if (this.schema.Where(w => w.ColumnName.ToLower() == dc.ColumnName.ToLower()).Count() > 0 && mycolumn.DataType == dc.DataType) { this.SetNewRowValue(from[i, dc.ColumnName], dc.ColumnName); } } this.AddNewRow(); } }
/// <summary> /// 将from表中的数据写入到本表中,按照欄位名稱对应,Append方式 /// </summary> /// <param name="from"></param> public void SetValueApppend_From(DataTableStd from) { for (int i = 0; i < from.RowLength; i++) { foreach (DataColumn dc in from.Value.Columns) { if (this.Value.Columns.Contains(dc.ColumnName) && this.Value.Columns[dc.ColumnName].MaxLength == dc.MaxLength && this.Value.Columns[dc.ColumnName].DataType == dc.DataType) { this.SetNewRowValue(from[i, dc.ColumnName], dc.ColumnName); } } this.AddNewRow(); } }
/// <summary> /// 转化成标准类型 /// </summary> /// <param name="o"></param> /// <returns></returns> public static DataTableStd ParseStd(object o) { if (o == null) { return(null); } else if (o is DbDataReader) { var ddr = (DbDataReader)o; var rtn = new DataTableStd(); if (!ddr.CanGetColumnSchema()) { for (var i = 0; i < ddr.FieldCount; i++) { rtn.AddColumn(new ColumnP() { ColumnName = ddr.GetName(i) }); } while (ddr.Read()) { rtn.NewRow(); foreach (var col in rtn.schema) { var val = ddr[col.ColumnName]; rtn.SetNewRowValue(ConvertDBValue2Object(val), col.ColumnName); } rtn.AddNewRow(); } } else { var cschema = ddr.GetColumnSchema(); for (int i = 0; i < ddr.FieldCount; i++) { rtn.AddColumn(new ColumnP() { ColumnName = cschema[i].ColumnName, DataType = cschema[i].DataType.FullName, IsAllowNull = cschema[i].AllowDBNull == null ? false : cschema[i].AllowDBNull.Value, IsAutoIncrement = cschema[i].IsAutoIncrement == null ? false : cschema[i].IsAutoIncrement.Value, IsPK = cschema[i].IsKey == null ? false : cschema[i].IsKey.Value, Length = cschema[i].ColumnSize == null ? -1 : cschema[i].ColumnSize.Value }); } while (ddr.Read()) { rtn.NewRow(); foreach (var col in rtn.ColumnNames) { rtn.SetNewRowValue(ConvertDBValue2Object(ddr[col]), col); } rtn.AddNewRow(); } } return(rtn); } else if (o.GetType() != Type.GetType("System.Data.DataTable")) { return(null); } else if (o is DataTableStd) { return((DataTableStd)o); } else if (o is IEnumerable <object> ) { var rtn = new DataTableStd(); var list = ((IEnumerable <object>)o).Select(d => (FrameDLRObject)FrameDLRObject.CreateInstance(d, Constants.FrameDLRFlags.SensitiveCase)); if (list.Count() > 0) { var first = list.First(); foreach (var item in first.Items) { rtn.AddColumn(new ColumnP() { ColumnName = item.Key }); } foreach (var item in list) { rtn.NewRow(); foreach (var key in item.Keys) { rtn.SetNewRowValue(item.GetValue(key), key); } rtn.AddNewRow(); } } return(rtn); } else { return(null); } }