Давайте попробуем этот код:
var NounsA = new List<string>() { "a", "b" };
var NounsB = new List<string>() { "aa", "bb" };
{
for (var i = 0; i < NounsA.Count; i++)
{
if (NounsB.Any(s => s.Contains(NounsA[i])))
{
Console.WriteLine("!");
}
}
}
{
for (var i = 0; i < NounsA.Count; i++)
{
if (NounsB.Contains(NounsA[i]))
{
Console.WriteLine("#");
}
}
}
При запуске я получаю следующий вывод на консоль:
!
!
Оба блока выполняются через список NounsA
, по одному элементу за раз и задают следующие вопросы соответственно:
- Содержит ли любая из строк в
NounsB
в качестве подстроки текущее значение из NounsA
? - Имеют ли какие-либо из строк в
NounsB
ровно текущее значение из NounsA
?
Так что в моем примере первое совпадение дважды равно "aa"
содержит "a"
и "bb"
содержит "b"
, но второе не совпадает, поскольку ни "aa"
, ни "bb"
не равняются ни "a"
, ни "b"
.