Как определить, содержит ли строка любые совпадения списка строк

Привет, у меня есть список строк:

var listOfStrings = new List<string>{"Cars", "Trucks", "Boats"};

и у меня есть варианты транспортных средств, у которых есть поле Name.

Я хочу найти транспортные средства, где имя соответствует одному из элементов в спискеOfStrings.

Я пытаюсь сделать это с помощью linq, но пока не могу завершить его.

var matchingVehicles = Vehicles.Where(v => v.Name == one of the listOfStringItem)

Может ли кто-нибудь помочь мне с этим?

Ответ 1

Vehicles.Where(v => listOfStrings.Contains(v.Name))

Ответ 2

Используйте HashSet вместо List, таким образом вы можете искать строку без необходимости прокручивать список.

var setOfStrings = new HashSet<string> {"Cars", "Trucks", "Boats"};

Теперь вы можете использовать метод Contains для эффективного поиска соответствия:

var matchingVehicles = Vehicles.Where(v => setOfStrings.Contains(v.Name));

Ответ 3

будет ли это работать:

listOfStrings.Contains("Trucks");

Ответ 4

var m = Vehicles.Where(v => listOfStrings.Contains(v.Name));

Ответ 5

Вы можете выполнить Inner Join:

var matchingVehicles = from vehicle in vehicles
                       join item in listOfStrings on vehicle.Name equals item
                       select vehicle;

Ответ 6

Vehicles.Where(vehicle => listOfStrings.Contains(vehicle.Name))

Ответ 7

Чтобы проверить, содержит ли строка один из этих символов (логический вывод):

var str= "string to test";
var chr= new HashSet<char>{',', '&', '.', '`', '*', '$', '@', '?', '!', '-', '_'};
bool test = str.Any(c => chr.Contains(c));

Ответ 8

возвращает значение bool и принимает строку или переменную.

string country = "southindia";
string cou = "india";
if (country.Contains(cou))
{
Console.WriteLine(country);
}
else
{
Console.WriteLine(cou);
}