Maison > développement back-end > C++ > Comment créer des clauses WHERE dynamiques avec une logique OU dans LINQ to Entities ?

Comment créer des clauses WHERE dynamiques avec une logique OU dans LINQ to Entities ?

Patricia Arquette
Libérer: 2025-01-22 04:51:10
original
919 Les gens l'ont consulté

How to Build Dynamic WHERE Clauses with OR Logic in LINQ to Entities?

Utilisez la logique OR pour créer des clauses WHERE dynamiques dans LINQ to Entities

LINQ to Entities utilise une exécution retardée pour créer des requêtes dynamiques. Cependant, ces requêtes utilisent généralement AND pour connecter les conditions WHERE. Pour implémenter la logique OU, envisagez d'utiliser une bibliothèque de création de prédicats telle que LINQKit.

Utilisez PredicateBuilder de LINQKit

Avec LINQKit, les prédicats peuvent être construits dynamiquement à l'aide de son PredicateBuilder. Voici une version modifiée du code fourni :

<code class="language-c#">var query = from u in context.Users select u;
var pred = Predicate.False<user>();

if (type.HasFlag(IdentifierType.Username))
    pred = pred.Or(u => u.Username == identifier);

if (type.HasFlag(IdentifierType.Windows))
    pred = pred.Or(u => u.WindowsUsername == identifier);

return query.Where(pred.Expand()).FirstOrDefault();</code>
Copier après la connexion
La méthode

Expand() remplace l'expression appelante par une structure plus simple que Entity Framework comprend. Sans cela, des exceptions se produiront lors de l'exécution de la requête.

Autres constructeurs de prédicats

Vous pouvez également envisager d'utiliser le générateur de prédicats universel de Peter Montgomery : https://www.php.cn/link/cfaedf8d25fee6179bfc4bcb64bbbfbd()`.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal