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
Barbara Streisandoriginal
2025-01-21 17:36:09171parcourir

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>

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>

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>

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!

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