diff --git a/framework/Fur/DatabaseAccessor/Extensions/DatabaseFacade/DbDataConvertExtensions.cs b/framework/Fur/DatabaseAccessor/Extensions/DatabaseFacade/DbDataConvertExtensions.cs index 7b3efcdad839703d90f17de6d1deacad3b9193f5..ce0f72a24dc79ced891ff33442f9a947ca28e42b 100644 --- a/framework/Fur/DatabaseAccessor/Extensions/DatabaseFacade/DbDataConvertExtensions.cs +++ b/framework/Fur/DatabaseAccessor/Extensions/DatabaseFacade/DbDataConvertExtensions.cs @@ -1,4 +1,4 @@ -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // Fur 是 .NET 5 平台下极易入门、极速开发的 Web 应用框架。 // Copyright © 2020 Fur, Baiqian Co.,Ltd. // @@ -322,5 +322,51 @@ namespace Fur.DatabaseAccessor { return Task.FromResult(dataTable.ToList(returnType)); } + + #region 把List转换为DataTable + /// + /// 把List转换为DataTable + /// + /// 数据实体模型 + /// 实体列表 + /// 源结构表 + /// + public static DataTable ToDataTable(this ICollection items,DataTable sourceTable) + { + if(sourceTable==null) + sourceTable = new DataTable(); + + PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); + foreach (PropertyInfo prop in Props) + { + DataColumn col = new DataColumn(); + col.ColumnName = prop.Name; + col.DataType = prop.PropertyType; + sourceTable.Columns.Add(col); + } + + foreach (T obj in items) + { + //DataRow newRow = sourceTable.NewRow(); + //for (int i = 0; i < Props.Length; i++) + //{ + // PropertyInfo prop = Props[i]; + // if(sourceTable.Columns.Contains(prop.Name)) + // newRow[prop.Name] = Props[i].GetValue(obj, null); + //} + //sourceTable.Rows.Add(newRow); + + //快速模式 + var values = new object[Props.Length]; + for (int i = 0; i < Props.Length; i++) + { + values[i] = Props[i].GetValue(obj, null); + } + sourceTable.Rows.Add(values); + } + + return sourceTable; + } + #endregion } } \ No newline at end of file