From fe5e10fc06142a7c54bcee04b400090554c91f5d Mon Sep 17 00:00:00 2001 From: qd98zhq <249321675@qq.com> Date: Mon, 9 Nov 2020 08:58:45 +0800 Subject: [PATCH] =?UTF-8?q?update=20framework/Fur/DatabaseAccessor/Extensi?= =?UTF-8?q?ons/DatabaseFacade/DbDataConvertExtensions.cs.=20=E6=8A=8AList=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/Fur/DatabaseAccessor/Extensions/DatabaseFacade/DbDataConvertExtensions.cs b/framework/Fur/DatabaseAccessor/Extensions/DatabaseFacade/DbDataConvertExtensions.cs index 7b3efcdad8..ce0f72a24d 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 -- Gitee