Răsfoiți Sursa

增加AddRangeIf重载

懒得勤快 11 luni în urmă
părinte
comite
8a6cc49824

+ 120 - 0
Masuit.Tools.Abstractions/Extensions/BaseType/IEnumerableExtensions.cs

@@ -358,6 +358,126 @@ public static class IEnumerableExtensions
         }
     }
 
+    /// <summary>
+    /// 符合条件则添加元素
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="this"></param>
+    /// <param name="predicate"></param>
+    /// <param name="values"></param>
+    public static ICollection<T> AddRangeIf<T>(this ICollection<T> @this, Func<bool> predicate, IEnumerable<T> values)
+    {
+        if (predicate())
+        {
+            foreach (var value in values)
+            {
+                @this.Add(value);
+            }
+        }
+
+        return @this;
+    }
+
+    /// <summary>
+    /// 符合条件则添加元素
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="this"></param>
+    /// <param name="predicate"></param>
+    /// <param name="values"></param>
+    public static ICollection<T> AddRangeIf<T>(this ICollection<T> @this, bool predicate, IEnumerable<T> values)
+    {
+        if (predicate)
+        {
+            foreach (var value in values)
+            {
+                @this.Add(value);
+            }
+        }
+
+        return @this;
+    }
+
+    /// <summary>
+    /// 符合条件则添加元素
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="this"></param>
+    /// <param name="predicate"></param>
+    /// <param name="values"></param>
+    public static ConcurrentBag<T> AddRangeIf<T>(this ConcurrentBag<T> @this, Func<bool> predicate, IEnumerable<T> values)
+    {
+        if (predicate())
+        {
+            foreach (var value in values)
+            {
+                @this.Add(value);
+            }
+        }
+
+        return @this;
+    }
+
+    /// <summary>
+    /// 符合条件则添加元素
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="this"></param>
+    /// <param name="predicate"></param>
+    /// <param name="values"></param>
+    public static ConcurrentBag<T> AddRangeIf<T>(this ConcurrentBag<T> @this, bool predicate, IEnumerable<T> values)
+    {
+        if (predicate)
+        {
+            foreach (var value in values)
+            {
+                @this.Add(value);
+            }
+        }
+
+        return @this;
+    }
+
+    /// <summary>
+    /// 符合条件则添加元素
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="this"></param>
+    /// <param name="predicate"></param>
+    /// <param name="values"></param>
+    public static ConcurrentQueue<T> AddRangeIf<T>(this ConcurrentQueue<T> @this, Func<bool> predicate, IEnumerable<T> values)
+    {
+        if (predicate())
+        {
+            foreach (var value in values)
+            {
+                @this.Enqueue(value);
+            }
+        }
+
+        return @this;
+    }
+
+    /// <summary>
+    /// 符合条件则添加元素
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
+    /// <param name="this"></param>
+    /// <param name="predicate"></param>
+    /// <param name="values"></param>
+    public static ConcurrentQueue<T> AddRangeIf<T>(this ConcurrentQueue<T> @this, bool predicate, IEnumerable<T> values)
+    {
+        if (predicate)
+        {
+            foreach (var value in values)
+            {
+                @this.Enqueue(value);
+            }
+        }
+
+        return @this;
+    }
+
     /// <summary>
     /// 添加不重复的元素
     /// </summary>