From e3452df14feffcd60dac7c5e4d280471c2c7cd51 Mon Sep 17 00:00:00 2001 From: qd98zhq <249321675@qq.com> Date: Tue, 8 Dec 2020 11:00:20 +0800 Subject: [PATCH] =?UTF-8?q?update=20framework/Furion/DatabaseAccessor/Exte?= =?UTF-8?q?nsions/DatabaseFacade/DbDataConvertExtensions.cs.=20=E6=8A=8ALi?= =?UTF-8?q?st=E8=BD=AC=E6=8D=A2=E4=B8=BADataTable?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DatabaseFacade/DbDataConvertExtensions.cs | 48 ++++++++++++++++++- 1 file changed, 47 insertions(+), 1 deletion(-) diff --git a/framework/Furion/DatabaseAccessor/Extensions/DatabaseFacade/DbDataConvertExtensions.cs b/framework/Furion/DatabaseAccessor/Extensions/DatabaseFacade/DbDataConvertExtensions.cs index 4247f07e3a..ed9e9b2724 100644 --- a/framework/Furion/DatabaseAccessor/Extensions/DatabaseFacade/DbDataConvertExtensions.cs +++ b/framework/Furion/DatabaseAccessor/Extensions/DatabaseFacade/DbDataConvertExtensions.cs @@ -1,4 +1,4 @@ -using Furion.DependencyInjection; +using Furion.DependencyInjection; using Furion.Extensions; using Mapster; using System; @@ -329,5 +329,51 @@ namespace Furion.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 -- Gitee