Maison >développement back-end >C++ >Comment utiliser Contains() avec un tableau de chaînes dans les requêtes LINQ ?
Comment remplacer Contains(string) par Contains(string[]) dans les requêtes LINQ
Dans LINQ, la méthode Contains() peut être utilisé pour vérifier si une collection contient un élément spécifique. Par défaut, la méthode Contains() prend un seul paramètre de chaîne, mais que se passe-t-il si vous devez comparer avec un tableau de chaînes ?
Question :
J'ai un Requête LINQ qui ressemble à ceci :
from xx in table where xx.uid.ToString().Contains(string[]) select xx
Les valeurs du tableau string[] sont des nombres (par exemple, 1, 45, 20, 10). Je souhaite utiliser la méthode Contains() pour vérifier si la propriété xx.uid (qui est un nombre) est présente dans le tableau. Comment puis-je faire cela ?
Réponse :
Pour comparer xx.uid à un tableau de chaînes, vous ne pouvez pas utiliser directement la méthode Contains(string). Au lieu de cela, vous devez convertir le tableau string[] en une collection prenant en charge la méthode Contains(). Voici deux approches :
Convertissez le tableau string[] en une liste
var uids = new List<string>(stringArray); var selected = table.Where(t => uids.Contains(t.uid.ToString()));
Si uid est également un entier, vous pouvez convertir le tableau string[] en un List
var uids = stringArray.Select(int.Parse).ToList(); var selected = table.Where(t => uids.Contains(t.uid));
Méthode d'extension (facultatif) :
Vous pouvez également créer une méthode d'extension pour la chaîne[ ] tapez pour fournir une méthode Contains() qui prend un argument chaîne :
public static bool Contains(this string[] arr, string value) { return arr.Any(s => s == value); }
Avec cette méthode d'extension, vous pouvez utiliser directement la méthode Contains() sur le tableau string[] :
var selected = table.Where(t => stringArray.Contains(t.uid.ToString()));
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!