Maison >développement back-end >C++ >Comment utiliser Contains() avec un tableau de chaînes dans les requêtes LINQ ?

Comment utiliser Contains() avec un tableau de chaînes dans les requêtes LINQ ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-27 07:19:09121parcourir

How to Use Contains() with a String Array in LINQ Queries?

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 :

  1. Utilisation d'une liste :

Convertissez le tableau string[] en une liste puis utilisez la méthode Contains() sur la liste :

var uids = new List<string>(stringArray);
var selected = table.Where(t => uids.Contains(t.uid.ToString()));
  1. Utilisation d'une liste (si uid est également un entier) :

Si uid est également un entier, vous pouvez convertir le tableau string[] en un List puis utilisez la méthode Contains() sur la liste :

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn