Überprüft, ob der Inhalt zweier Listen gleich ist anhand der Hashcodes der Elemente
/// <summary>
/// Prüft zwei Ausflistungen auf Übereinstimmung.
/// </summary>
/// <param name="resultIfEmpty">Was soll zurückgegeben werden, wenn beide Listen leer sind?</param>
/// <returns></returns>
private bool HasDifferences<T>(ICollection<T> listA, ICollection<T> listB, bool resultIfEmpty)
{
if (!listA.Any() && !listB.Any()) return resultIfEmpty;
// Unterschiede, wenn ...
// Anzahl unterschiedlich
// ODER
// (Es gibt Liste A Elemente, die nicht in Liste B enthalten sind
// ODER es gibt List B Elemente, die nicht in Liste A enthalten sind)
return listA.Count != listB.Count || (listA.Any(iA => !listB.Contains(iA)) || listB.Any(iB => !listA.Contains(iB)));
}
Kommentare zum Snippet