嗨说我有一个字符串列表:
var listOfStrings = new List<string>{"Cars", "Trucks", "Boats"};
我有一个车辆选项,其中有一个名称字段。
我想找到名称与listOfStrings中的一个项目匹配的车辆。
我正在尝试用linq做这个,但目前似乎无法完成它。
var matchingVehicles = Vehicles.Where(v => v.Name == one of the listOfStringItem)
有人可以帮我吗?
答案 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));