Вы можете использовать функцию Any, если используете расширения метода LINQ (.net 3.5).
как это:
var foobar = "foobar";
new[] {"foo", "bar"}.Any(foobar.Contains);
но если вы дезассемблируете Any, вы все равно увидите, что это просто петля.
публичная статика бо
public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)
{
if (source == null)
{
throw Error.ArgumentNull("source");
}
if (predicate == null)
{
throw Error.ArgumentNull("predicate");
}
foreach (TSource local in source)
{
if (predicate(local))
{
return true;
}
}
return false;
}
Так что, если вы не хотите использовать .net 3.5, вышеуказанная функция в .Net 2.0 будет выглядеть следующим образом:
public static class Utilities
{
public delegate bool AnyPredicate<T>(T arg);
public static bool Any<TSource>(IEnumerable<TSource> source, AnyPredicate<TSource> predicate)
{
if (source == null)
{
throw new ArgumentException("source");
}
if (predicate == null)
{
throw new ArgumentException("predicate");
}
foreach (TSource local in source)
{
if (predicate(local))
{
return true;
}
}
return false;
}
}
использование:
var foobarlist = new[]{"foo", "bar"};
var foobar = "foobar";
var containsfoobar = Utilities.Any(foobarlist, foobar.Contains);
Надеюсь, это поможет.