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

Comment réaliser des comparaisons sensibles à la casse dans LINQ to Entities ?

DDD
DDDoriginal
2025-01-21 17:41:09778parcourir

How to Achieve Case-Sensitive Comparisons in LINQ to Entities?

Réalisation de comparaisons sensibles à la casse dans LINQ to Entities

Les requêtes LINQ to Entities, comme Thingies.First(t => t.Name == "ThingamaBob"), peuvent ne pas être sensibles à la casse par défaut. Cela est dû au fait que LINQ to Entities traduit les expressions Lambda en SQL, où le respect de la casse repose sur les paramètres de classement de la base de données SQL Server.

Solution au niveau de la base de données : modification du classement

Le moyen le plus efficace de garantir des comparaisons sensibles à la casse est de modifier le classement de la colonne en une option sensible à la casse. Par exemple, pour rendre la colonne Name de la table Thingies sensible à la casse, utilisez cette commande SQL :

<code class="language-sql">ALTER TABLE Thingies
ALTER COLUMN Name VARCHAR(25)
COLLATE Latin1_General_CS_AS</code>

Approche côté client : utilisation de LINQ to Objects

Si la modification du classement de la base de données n'est pas réalisable, une solution côté client utilisant LINQ to Objects fournit une alternative. Cela implique une requête initiale dans la base de données suivie d'une comparaison en mémoire à l'aide de AsEnumerable(). Exemple :

<code class="language-csharp">Thingies.Where(t => t.Name == "ThingamaBob")
        .AsEnumerable()
        .First(t => t.Name == "ThingamaBob");</code>

Cela effectue la vérification en mémoire sensible à la casse après le filtrage initial de la base de données. Notez que cette méthode peut être moins performante que le changement de classement côté serveur.

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