using System.Collections.Generic;
public static void Main()
var words = new[] {"abcde","iertaz","aio","zzeml","amoioze"};
var search = new[] {'a','e','i','z'};
foreach (string match in words.ContainsAll(search))
Console.WriteLine(match);
public static IEnumerable<IEnumerable<T>> ContainsAll<T>(
this IEnumerable<IEnumerable<T>> source,
IEqualityComparer<T> comparer = default)
ArgumentNullException.ThrowIfNull(source);
ArgumentNullException.ThrowIfNull(search);
comparer ??= EqualityComparer<T>.Default;
var searchSet = new HashSet<T>(search, comparer);
return source.Where(item => searchSet.IsSubsetOf(item));