瀏覽代碼

增加AddRangeIf重载

懒得勤快 11 月之前
父節點
當前提交
8a6cc49824
共有 1 個文件被更改,包括 120 次插入0 次删除
  1. 120 0
      Masuit.Tools.Abstractions/Extensions/BaseType/IEnumerableExtensions.cs

+ 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>
     /// 添加不重复的元素
     /// 添加不重复的元素
     /// </summary>
     /// </summary>