12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Ips.Library.Basic
- {
- public static class CollectionExtensions
- {
- public static void AddIf<T>(this ICollection<T> source, bool predicate, T item)
- {
- if (predicate) source.Add(item);
- }
- public static bool AddIfNotContains<T>(this ICollection<T> source, T item)
- {
- if (source.Contains(item))
- {
- return false;
- }
- source.Add(item);
- return true;
- }
- public static IEnumerable<T> AddIfNotContains<T>(this ICollection<T> source, IEnumerable<T> items)
- {
- var addedItems = new List<T>();
- foreach (var item in items)
- {
- if (source.Contains(item))
- {
- continue;
- }
- source.Add(item);
- addedItems.Add(item);
- }
- return addedItems;
- }
- public static bool AddIfNotContains<T>(this ICollection<T> source, Func<T, bool> predicate, Func<T> itemFactory)
- {
- if (source.Any(predicate))
- {
- return false;
- }
- source.Add(itemFactory());
- return true;
- }
- public static IList<T> RemoveAll<T>(this ICollection<T> source, Func<T, bool> predicate)
- {
- var items = source.Where(predicate).ToList();
- foreach (var item in items)
- {
- source.Remove(item);
- }
- return items;
- }
- public static void RemoveAll<T>(this ICollection<T> source, IEnumerable<T> items)
- {
- foreach (var item in items)
- {
- source.Remove(item);
- }
- }
- }
- }
|