public static List <dynamic> DataReaderToDynamic(System.Data.Common.DbDataReader reader, out double runTime) { var time = DateTime.Now; List <dynamic> list = new List <dynamic>(); var columns = new List <string>(); for (int i = 0; i < reader.FieldCount; i++) { columns.Add(reader.GetName(i)); } try { #region while while (reader.Read()) { object[] values = new object[columns.Count]; reader.GetValues(values); var d = getRow(columns, values); list.Add(d); } #endregion } catch (Exception ero) { reader.Close(); throw new CRLException("读取数据时发生错误:" + ero.Message); } reader.Close(); runTime = (DateTime.Now - time).TotalMilliseconds; return(list); }
/// <summary> /// 返回匿名类型 /// </summary> /// <typeparam name="T"></typeparam> /// <typeparam name="TResult"></typeparam> /// <param name="reader"></param> /// <param name="resultSelector"></param> /// <param name="runTime"></param> /// <returns></returns> public static List <TResult> DataReaderToDynamic <T, TResult>(System.Data.Common.DbDataReader reader, Expression <Func <T, TResult> > resultSelector, out double runTime) where T : IModel, new() { var time = DateTime.Now; List <TResult> list = new List <TResult>(); var typeArry = TypeCache.GetProperties(typeof(T), true).Values; var columns = new Dictionary <string, int>(); for (int i = 0; i < reader.FieldCount; i++) { columns.Add(reader.GetName(i).ToLower(), i); } var reflection = ReflectionHelper.GetInfo <T>(); var actions = new List <CRL.ObjectConvert.ActionItem <T> >(); var first = true; //var objOrigin = new T(); while (reader.Read()) { object objInstance = reflection.CreateObjectInstance(); object[] values = new object[columns.Count]; reader.GetValues(values); var detailItem = ObjectConvert.DataReaderToObj <T>(columns, values, reflection, true, objInstance, typeArry, actions, first) as T; var result = resultSelector.Compile()(detailItem); list.Add(result); first = false; } reader.Close(); runTime = (DateTime.Now - time).TotalMilliseconds; return(list); }
static string AsSqlInsert(System.Data.Common.DbDataReader result, string tableName) { var sb = new System.Text.StringBuilder(); sb.AppendFormat ("INSERT INTO {0} (",tableName); for (int i = 0; i < result.FieldCount; i++) { sb.Append('\t' + result.GetName(i) + ",\r\n"); } sb.Length -= 3; // remove last comma sb.Append(") VALUES (\r\n\t"); object[] vals = new object[result.FieldCount]; result.GetValues(vals); sb.Append(string.Join(",\r\n\t", vals.Select(ValueToSqlString))); sb.Append(')'); return sb.ToString(); }
private void AddReaderToGrid(BasePopupViewModel viewModel, System.Data.Common.DbDataReader dataReader) { DataTable dtSource = new DataTable(); dtSource.TableName = "Data"; for (int i = 0; i < dataReader.FieldCount; i++) { DataColumn col = new DataColumn(dataReader.GetName(i), dataReader.GetFieldType(i)); dtSource.Columns.Add(col); } while (dataReader.Read()) { object[] values = new object[dataReader.FieldCount]; dataReader.GetValues(values); dtSource.LoadDataRow(values, false); } dataReader.Close(); AddControlsToGrid(viewModel, dtSource, ""); }
public static List <dynamic> DataReaderToDynamic(System.Data.Common.DbDataReader reader, out double runTime) { var time = DateTime.Now; List <dynamic> list = new List <dynamic>(); var columns = new List <string>(); for (int i = 0; i < reader.FieldCount; i++) { columns.Add(reader.GetName(i)); } while (reader.Read()) { object[] values = new object[columns.Count]; reader.GetValues(values); var d = getDataRow(columns, values); list.Add(d); } reader.Close(); runTime = (DateTime.Now - time).TotalMilliseconds; return(list); }