Feedback

Comparing two lists

Sprache: C#

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