lazy y chen 2 years ago
parent
commit
e39a24538d

+ 32 - 1
Masuit.Tools.Abstractions/Extensions/BaseType/ObjectExtensions.cs

@@ -259,7 +259,7 @@ namespace Masuit.Tools
 		/// <param name="a"></param>
 		/// <param name="b"></param>
 		/// <param name="others"></param>
-		public static void Merge<T>(this T a, T b, params T[] others) where T : class
+		public static T Merge<T>(this T a, T b, params T[] others) where T : class
 		{
 			foreach (var item in new[] { b }.Concat(others))
 			{
@@ -269,6 +269,37 @@ namespace Masuit.Tools
 					a.SetProperty(p.Key, p.Value);
 				}
 			}
+
+			return a;
+		}
+
+		/// <summary>
+		/// 多个对象的属性值合并
+		/// </summary>
+		/// <typeparam name="T"></typeparam>
+		public static T Merge<T>(this IEnumerable<T> objects) where T : class
+		{
+			var list = objects as List<T> ?? objects.ToList();
+			if (list.Count == 0)
+			{
+				return null;
+			}
+
+			if (list.Count == 1)
+			{
+				return list[0];
+			}
+
+			foreach (var item in list.Skip(1))
+			{
+				var dic = item.ToDictionary();
+				foreach (var p in dic.Where(p => list[0].GetProperty(p.Key).IsDefaultValue()))
+				{
+					list[0].SetProperty(p.Key, p.Value);
+				}
+			}
+
+			return list[0];
 		}
 	}
 

+ 1 - 1
Masuit.Tools.Abstractions/Masuit.Tools.Abstractions.csproj

@@ -3,7 +3,7 @@
         <TargetFrameworks>netstandard2.0;netstandard2.1;net461;net5;net6;net7</TargetFrameworks>
         <LangVersion>latest</LangVersion>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-        <Version>2.6.2.2</Version>
+        <Version>2.6.2.3</Version>
         <Authors>懒得勤快</Authors>
         <Description>Masuit.Tools基础公共库,包含一些常用的操作类,大都是静态类,加密解密,反射操作,Excel简单导出,权重随机筛选算法,分布式短id,表达式树,linq扩展,文件压缩,多线程下载和FTP客户端,硬件信息,字符串扩展方法,日期时间扩展操作,中国农历,大文件拷贝,图像裁剪,验证码,断点续传,集合扩展等常用封装。</Description>
         <Copyright>懒得勤快,长空X</Copyright>

+ 1 - 1
Masuit.Tools.AspNetCore/Masuit.Tools.AspNetCore.csproj

@@ -18,7 +18,7 @@
         <Product>Masuit.Tools.AspNetCore</Product>
         <PackageId>Masuit.Tools.AspNetCore</PackageId>
         <LangVersion>latest</LangVersion>
-        <Version>1.2.2.2</Version>
+        <Version>1.2.2.3</Version>
         <RepositoryType></RepositoryType>
         <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
         <FileVersion>1.1.9</FileVersion>

+ 1 - 1
Masuit.Tools.Core/Masuit.Tools.Core.csproj

@@ -6,7 +6,7 @@
 官网教程:https://ldqk.org/55
 github:https://github.com/ldqk/Masuit.Tools
         </Description>
-        <Version>2.6.2.2</Version>
+        <Version>2.6.2.3</Version>
         <Copyright>Copyright © 懒得勤快</Copyright>
         <PackageProjectUrl>https://github.com/ldqk/Masuit.Tools</PackageProjectUrl>
         <PackageTags>Masuit.Tools,工具库,Utility,Crypt,Extensions</PackageTags>

+ 1 - 1
Masuit.Tools.Excel/Masuit.Tools.Excel.csproj

@@ -3,7 +3,7 @@
         <TargetFramework>netstandard2.0</TargetFramework>
         <LangVersion>latest</LangVersion>
         <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
-        <Version>1.2.5.8</Version>
+        <Version>1.2.5.9</Version>
         <Authors>懒得勤快</Authors>
         <Description>Masuit.Tools.Excel导出库,支持一些简单数据的导出,支持图片列</Description>
         <Copyright>懒得勤快</Copyright>