Bug bei der Anzeige von vergangenen Terminbenachrichtigungen behoben. Kliententeams sind jetzt mit drin (noch nicht fertig).
57 lines
1.4 KiB
C#
57 lines
1.4 KiB
C#
using System;
|
|
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);
|
|
}
|
|
|
|
public static bool AreEqual<T>(this ICollection<T> pCollection, ICollection<T> pCollection2)
|
|
{
|
|
if(pCollection.Count != pCollection2.Count)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var tmp1 = pCollection.OrderBy(x => x.GetHashCode()).ToList();
|
|
var tmp2 = pCollection2.OrderBy(x => x.GetHashCode()).ToList();
|
|
|
|
return !pCollection.Where((t, i) => !tmp1.ElementAt(i).Equals(tmp2.ElementAt(i))).Any();
|
|
}
|
|
}
|
|
} |