Maison >développement back-end >C++ >Comment créer dynamiquement des clauses WHERE dans les requêtes LINQ ?

Comment créer dynamiquement des clauses WHERE dans les requêtes LINQ ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-14 06:57:43595parcourir

How to Dynamically Build WHERE Clauses in LINQ Queries?

Construction dynamique de la clause WHERE dans LINQ

Lors de la création d'une requête LINQ, vous devrez peut-être assembler dynamiquement la clause WHERE en fonction des entrées de l'utilisateur ou des conditions d'exécution. Ceci est particulièrement utile lorsqu'il s'agit de filtres complexes ou de sélection de données dynamiques.

Par exemple, disons que vous disposez d'un formulaire avec un certain nombre de cases à cocher que vous transmettez comme dictionnaire de noms de champs et de leurs valeurs correspondantes. Afin d'incorporer ce filtrage dynamique dans une requête LINQ, vous pouvez utiliser la méthode de chaînage démontrée dans l'exemple de code fourni.

<code class="language-c#">var q = from c in db.ProductDetail
        where c.ProductGroupName == productGroupName && c.ProductTypeName == productTypeName
        select c;

foreach (var filterPair in filterDictionary)
{
    q = q.Where(c => filterPair.Value.Contains(c.GetPropertyValue(filterPair.Key)));
}

q = q.OrderBy(c => c.ProductTypeName);</code>

Dans cet exemple, le filterDictionary est itéré et pour chaque paire de filtres (paire clé-valeur), une nouvelle clause WHERE est ajoutée à la requête. Appelez la méthode GetPropertyValue pour récupérer dynamiquement la valeur de propriété du fieldName spécifié.

Vous pouvez également chaîner la clause WHERE directement dans l'instruction de requête initiale, comme indiqué dans l'exemple de code fourni dans la solution.

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