Files
BeWoPlaner/Shared/Extensions/ICollectionExtensions.cs
2016-06-27 01:45:38 +02:00

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);
}
}
}