Maison > développement back-end > C++ > Comment puis-je effectuer des comparaisons sensibles à la casse dans LINQ to Entities ?

Comment puis-je effectuer des comparaisons sensibles à la casse dans LINQ to Entities ?

Barbara Streisand
Libérer: 2025-01-21 17:36:09
original
169 Les gens l'ont consulté

How Can I Perform Case-Sensitive Comparisons in LINQ to Entities?

Comparaison insensible à la casse dans LINQ to Entities

Contrairement à LINQ to Objects, LINQ to Entities ne prend pas directement en charge les comparaisons sensibles à la casse. En effet, LINQ to Entities convertit les expressions Lambda en instructions SQL, qui sont finalement exécutées par la base de données (telle que SQL Server). Par défaut, SQL Server utilise un classement insensible à la casse, ce qui signifie que la requête suivante renverra toujours une correspondance quelle que soit la casse :

<code>context.Thingies.First(t => t.Name == "ThingamaBob");</code>
Copier après la connexion

Solution côté serveur

Pour implémenter une comparaison sensible à la casse dans LINQ to Entities, le classement de la base de données des colonnes pertinentes doit être modifié. Par exemple, l'instruction SQL suivante modifie le classement de la colonne « Nom » dans la table « Thingies » pour qu'il soit sensible à la casse :

<code>ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS;</code>
Copier après la connexion

Solution client

Bien qu'elle ne soit pas idéale, il existe une solution de contournement côté client qui exploite à la fois LINQ to Entities et LINQ to Objects :

<code>var result = context.Thingies.Where(t => t.Name == "ThingamaBob")
                   .AsEnumerable()
                   .First(t => t.Name == "ThingamaBob");</code>
Copier après la connexion

Dans cette approche, AsEnumerable() convertit la requête en une énumération en mémoire, vous permettant d'effectuer une comparaison secondaire sensible à la casse à l'aide de Where(). Toutefois, cette solution de contournement introduit des requêtes supplémentaires dans la base de données.

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