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