Ниже приведены два метода расширения.
ContainsAny() проверяет, содержит ли какой-либо из строковых элементов в IEnumerable строку, в которую вызывается метод. OK, No problemЛюбое() в выражении цепочки Linq
_ContainsAny() использует закодированное выражение Linq, чтобы проверить, содержится ли какой-либо из строковых элементов в IEnumerable в строке.
1) Первый вопрос: есть ли вообще отличие в результате того, что он может производить следующие два разных типа логики. Я получаю те же результаты.
2) Второй вопрос: как работает выражение Chain Linq? return stringsToMatch.Any(item => source.Contains(item));
Содержит() возвращает логическое значение для метода Any()? Как именно методы Any() и Contains() работают вместе в этом цепном выражении?
public static class ContainsAnyExtension
{
public static bool ContainsAny(this string source, IEnumerable<string> stringsToMatch)
{
return stringsToMatch.Contains(source);
}
public static bool _ContainsAny(this string source, IEnumerable<string> stringsToMatch)
{
return stringsToMatch.Any(item => source.Contains(item));
}
}
Да, я получаю его вместе с логической разницей между двумя, – Aarondv1
Да, я получаю его с логической разницей между ними, но в выражении Linq Any() возвращает логическое, совершенное. Но в выражении Any присутствует source.Contains (item), который, как я понимаю, просматривает каждый из элементов в последовательности и проверяет его на строку «source». Если Any() из этих вычислений source.Contains (item) возвращает true, то метод Any вернет true для функции. Это верно? – Aarondv1