45 lines
1.0 KiB
C#
45 lines
1.0 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace BS.Shared.Extensions
|
|
{
|
|
public static class ICollectionExtensions
|
|
{
|
|
public static void AddIfNotIn<T>(this ICollection<T> pCollection, T pToAdd)
|
|
{
|
|
if (!pCollection.Contains(pToAdd))
|
|
{
|
|
pCollection.Add(pToAdd);
|
|
}
|
|
}
|
|
|
|
public static void AddRange<T>(this ICollection<T> pCollection, IEnumerable<T> pToAdd)
|
|
{
|
|
foreach (var iItem in pToAdd)
|
|
{
|
|
pCollection.Add(iItem);
|
|
}
|
|
}
|
|
|
|
public static bool Exists<T>(this IEnumerable<T> pCollection, Predicate<T> pMatch)
|
|
{
|
|
return pCollection.Any(iItem => pMatch(iItem));
|
|
}
|
|
|
|
public static void RemoveRange<T>(this ICollection<T> pList, IEnumerable<T> pToRemove)
|
|
{
|
|
foreach (T iItem in pToRemove.ToList())
|
|
{
|
|
pList.Remove(iItem);
|
|
}
|
|
}
|
|
|
|
public static void RemoveRange<T>(this ICollection<T> pList, Predicate<T> pMatch)
|
|
{
|
|
var lToDelete = pList.Where(t => pMatch(t)).ToHashSet();
|
|
pList.RemoveRange(lToDelete);
|
|
}
|
|
}
|
|
} |