Salut disons que j'ai une liste de chaînes:
var listOfStrings = new List<string>{"Cars", "Trucks", "Boats"};
et j'ai une option de véhicules qui a un champ Nom.
Je souhaite rechercher les véhicules dont le nom correspond à l'un des éléments de la liste de chaînes.
J'essaie de faire cela avec linq mais n'arrive pas à le terminer pour le moment.
var matchingVehicles = Vehicles.Where(v => v.Name == one of the listOfStringItem)
Quelqu'un peut-il m'aider avec ça?
Vehicles.Where(v => listOfStrings.Contains(v.Name))
Utilisez une HashSet
au lieu d'une List
. Ainsi, vous pourrez rechercher une chaîne sans devoir parcourir la liste en boucle.
var setOfStrings = new HashSet<string> {"Cars", "Trucks", "Boats"};
Vous pouvez maintenant utiliser la méthode Contains
pour rechercher efficacement une correspondance:
var matchingVehicles = Vehicles.Where(v => setOfStrings.Contains(v.Name));
cela fonctionnerait-il:
listOfStrings.Contains("Trucks");
var m = Vehicles.Where(v => listOfStrings.Contains(v.Name));
Vous pouvez effectuer un Inner Join :
var matchingVehicles = from vehicle in vehicles
join item in listOfStrings on vehicle.Name equals item
select vehicle;
Pour vérifier si une chaîne contient l'un de ces caractères (sortie booléenne):
var str= "string to test";
var chr= new HashSet<char>{',', '&', '.', '`', '*', '$', '@', '?', '!', '-', '_'};
bool test = str.Any(c => chr.Contains(c));
Vehicles.Where(vehicle => listOfStrings.Contains(vehicle.Name))