如何确定字符串是否包含字符串列表的任何匹配项

时间:2011-03-23 22:23:47

标签: c# asp.net linq

嗨说我有一个字符串列表:

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

我有一个车辆选项,其中有一个名称字段。

我想找到名称与listOfStrings中的一个项目匹配的车辆。

我正在尝试用linq做这个,但目前似乎无法完成它。

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

有人可以帮我吗?

7 个答案:

答案 0 :(得分:13)

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

答案 1 :(得分:12)

使用HashSet代替List,这样您就可以查找字符串而无需遍历列表。

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

现在,您可以使用Contains方法有效地查找匹配项:

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

答案 2 :(得分:6)

这会有效吗?

listOfStrings.Contains("Trucks");

答案 3 :(得分:1)

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

答案 4 :(得分:0)

您可以执行Inner Join

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

答案 5 :(得分:0)

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

答案 6 :(得分:0)

检查字符串是否包含其中一个字符(布尔输出):

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