Feedback

C# - Besteht Liste aus...? / Enthält Liste keine...?

Veröffentlicht von am 04.07.2013
(0 Bewertungen)
Manchmal ist es nötig, das man überprüfen muss, ob eine Auflistung nur aus den Elementen A, B und C besteht bzw. das diese Elemente eben nicht enthalten sind. Diese Methoden prüfen das. Näheres steht in der XML-Dokumentation.
Diese Methoden kann man auch für den Typ System.String einsetzen.

Hinweis: Die bereits existierenden Methoden Any und All machen praktisch das gleiche wie meine Methoden.
        /// <summary>
        /// Überprüft ob eine Auflistung aus Elementen einer anderen Auflistung besteht.
        /// </summary>
        /// <typeparam name="TSource">Der Typ, von dem die Elemente der Auflistungen sind.</typeparam>
        /// <param name="list">Die Liste, deren Elemnte geprüft werden sollen.</param>
        /// <param name="allowed">Die erlabuten Elemente.</param>
        /// <returns><c>True</c>, wenn die Liste nur Elemente der <paramref name="allowed"/>-Liste enthält. Andernfalls <c>False</c>.</returns>
        public static bool ContainsOnly<TSource>(this IEnumerable<TSource> list, IEnumerable<TSource> allowed)
        {
            foreach (TSource c in list)
                if (!allowed.Contains(c))
                    return false;
            return true;
        }
        /// <summary>
        /// Überprüft ob eine Auflistung keine Elemente einer anderen Auflistung besitzt.
        /// </summary>
        /// <typeparam name="TSource">Der Typ, von dem die Elemente der Auflistungen sind.</typeparam>
        /// <param name="list">Die Liste, deren Elemnte geprüft werden sollen.</param>
        /// <param name="prohibited">Die verbotenen Elemente.</param>
        /// <returns><c>True</c>, wenn die Liste keine Elemente der <paramref name="prohibited"/>-Liste enthält. Andernfalls <c>False</c>.</returns>
        public static bool ContainsNothing<TSource>(this IEnumerable<TSource> list, IEnumerable<TSource> prohibited)
        {
            foreach (TSource c in list)
                if (prohibited.Contains(c))
                    return false;
            return true;
        }

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!