Files
BeWoPlaner/Shared/Extensions/ICollectionExtensions.cs
staccatomamba 6b6f4a65ec Der Kalender funktioniert wieder wie vorher.
Bug bei der Anzeige von vergangenen Terminbenachrichtigungen behoben.
Kliententeams sind jetzt mit drin (noch nicht fertig).
2017-08-21 18:52:43 +02:00

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