Browse Source

新增DistinctBy

懒得勤快 7 years ago
parent
commit
1b7aa1d834

+ 16 - 1
Masuit.Tools.Core/Extensions.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 using Masuit.Tools.Security;
@@ -202,7 +203,7 @@ namespace Masuit.Tools
                 Parallel.ForEach(objs, action);
             });
         }
-        
+
         /// <summary>
         /// 遍历数组
         /// </summary>
@@ -1534,5 +1535,19 @@ namespace Masuit.Tools
             }
             return temp;
         }
+
+        /// <summary>
+        /// 按字段去重
+        /// </summary>
+        /// <typeparam name="TSource"></typeparam>
+        /// <typeparam name="TKey"></typeparam>
+        /// <param name="source"></param>
+        /// <param name="keySelector"></param>
+        /// <returns></returns>
+        public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
+        {
+            HashSet<TKey> hash = new HashSet<TKey>();
+            return source.Where(p => hash.Add(keySelector(p)));
+        }
     }
 }

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

@@ -2,7 +2,7 @@
 
   <PropertyGroup>
     <TargetFramework>netcoreapp2.0</TargetFramework>
-    <Version>1.9.1.4</Version>
+    <Version>1.9.2</Version>
     <Authors>懒得勤快</Authors>
     <Company>masuit.com</Company>
     <Description>包含一些常用的操作类,大都是静态类,加密解密,反射操作,硬件信息,字符串扩展方法,日期时间扩展操作,大文件拷贝,图像裁剪,html处理,验证码、NoSql等常用封装。

+ 16 - 1
Masuit.Tools/Extensions.cs

@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 using Masuit.Tools.Security;
@@ -202,7 +203,7 @@ namespace Masuit.Tools
                 Parallel.ForEach(objs, action);
             });
         }
-        
+
         /// <summary>
         /// 遍历数组
         /// </summary>
@@ -1549,5 +1550,19 @@ namespace Masuit.Tools
             }
             return temp;
         }
+
+        /// <summary>
+        /// 按字段去重
+        /// </summary>
+        /// <typeparam name="TSource"></typeparam>
+        /// <typeparam name="TKey"></typeparam>
+        /// <param name="source"></param>
+        /// <param name="keySelector"></param>
+        /// <returns></returns>
+        public static IEnumerable<TSource> DistinctBy<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector)
+        {
+            HashSet<TKey> hash = new HashSet<TKey>();
+            return source.Where(p => hash.Add(keySelector(p)));
+        }
     }
 }

+ 2 - 2
Masuit.Tools/Properties/AssemblyInfo.cs

@@ -36,7 +36,7 @@ using System.Runtime.InteropServices;
 // 方法是按如下所示使用“*”: :
 // [assembly: AssemblyVersion("1.0.*")]
 
-[assembly: AssemblyVersion("1.9.1")]
-[assembly: AssemblyFileVersion("1.9.1")]
+[assembly: AssemblyVersion("1.9.2")]
+[assembly: AssemblyFileVersion("1.9.2")]
 [assembly: NeutralResourcesLanguage("zh-CN")]
 

+ 7 - 0
Test/Program.cs

@@ -83,10 +83,17 @@ namespace Test
             //LogManager.Debug("bbbbbbbbbbbbbbbbb");
             //LogManager.Error(typeof(object), "bbbbbbbbbbbbbbbbb");
             //LogManager.Info("aaaaaaaaaaaaaaaaaaaaaaaaa");
+
+
             Console.ReadKey();
         }
     }
 
+    public class Banlance
+    {
+        public string Name { get; set; }
+        public int Amount { get; set; }
+    }
     public class MyClass
     {
         public string Name { get; set; }