Feedback

Besteht Liste aus…? / Enthält Liste keine…?

Sprache: C#

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. [b]Hinweis:[/b] 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;
        }
        /// <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;
        }