addresses = addresses.Where(x => postalCodes.Contains(x.Address));
То, что вы спросили здесь (как вы обнаружили), состоит в том, содержит ли список почтовых индексов весь этот адрес. Но это не то, что вам нужно.
Вам нужно проверить, можно ли найти какой-либо почтовый индекс в адресе и получить только адреса, для которых это действительно так. Работает следующий подход:
addresses = addresses.Where(x =>
postalCodes.Any(postalCode =>
x.Address.Contains(postalCode)
)
);
Чтобы выразить это словами: дайте мне все адреса, в которых строка адреса содержит любой этих почтовых кодов .
В качестве отступления:
Имейте в виду, что есть ложные срабатывания, например, если у вас есть почтовый индекс 1234
и у вас есть адреса с почтовым индексом 12345
, вы собираетесьчтобы получить конфликты. Один из способов избежать этого - включить в свой почтовый индекс разделитель /
из поля адреса:
postalCodes = postalCodes.Select(pc => $"/ {pc} /");
// and then the rest of the code as before
Это предотвратит большинство (если не все) ложных срабатываний.