/// <summary> /// 将DataTable转化成List对象 /// </summary> /// <param name="dt"></param> /// <returns></returns> public static List <T> ConvertToList(DataTable dt) { List <T> list = new List <T>(); DynamicBuilder <T> builder; Dictionary <string, string> columns = new Dictionary <string, string>(StringComparer.InvariantCultureIgnoreCase); #if CheckColumnExists for (int i = 0; i < dt.Columns.Count; i++) { string name = dt.Columns[i].ColumnName; if (!columns.ContainsKey(name)) { columns.Add(name, name); } } #endif if (dictBuilderDt.ContainsKey(typeof(T))) { builder = dictBuilderDt[typeof(T)]; } else { builder = DynamicBuilder <T> .CreateBuilder(dt.NewRow()); dictBuilderDt.Add(typeof(T), builder); } foreach (DataRow dr in dt.Rows) { list.Add(builder.BuildT(dr, columns)); } return(list); }
/// <summary> /// 把IDataReader转化为List对象列表 /// </summary> /// <param name="reader"></param> /// <returns></returns> public static List <T> ConvertToList(IDataReader reader) { List <T> list = new List <T>(); DynamicBuilder <T> builder; Dictionary <string, string> columns = new Dictionary <string, string>(StringComparer.InvariantCultureIgnoreCase); #if CheckColumnExists for (int i = 0; i < reader.FieldCount; i++) { string name = reader.GetName(i); if (!columns.ContainsKey(name)) { columns.Add(name, name); } } #endif if (dictBuilder.ContainsKey(typeof(T))) { builder = dictBuilder[typeof(T)]; } else { builder = DynamicBuilder <T> .CreateBuilder(reader); lock (dictBuilder) { if (!dictBuilder.ContainsKey(typeof(T))) { dictBuilder.Add(typeof(T), builder); } } } while (reader.Read()) { list.Add(builder.Build(reader, columns)); } return(list); }