Entity Framework, LINQ contient pas insensible à la casse

Je vais avoir quelques "m'arracher les cheveux'-problème avec Entity Framework et je ne peux pas trouver une solution.

Ce que je veux faire est de comparer les chaînes pour une fonction de recherche, je suis en cours d'exécution sur le serveur. En gros, c'est: collection.Where(c => c.Name.Contains(searchTerm)); où searchTerm est une chaîne de caractères passée par l'utilisateur.

Partout où je regarde, c'est soit:

  1. Changement de chaîne avec toUpper(), ou
  2. Jeu de classement à une casse.

Cependant aucune de ces situations s'applique à mon cas. Voici une question similaire, ce qui ne veut pas avoir de réponse: Entity Framework - casse Contient?

À l'aide de la première variante, on obtiendra chaque ligne de la base de données, puis effectuer toUpper(), pour voir si c'est un match. C'est inacceptable en terme de performance.

La deuxième approche semble plus susceptible d'être une solution valable, mais pour une raison quelconque de ne pas fonctionner. J'ai deux bases de données. L'une locale et l'autre à distance. La distance MSSQL base de données est définie classement: Finnish_Swedish_CI_AS, ce qui signifie qu'il est insensible à la casse? La base de données locale est généré automatiquement localDB avec la propriété "casse" la valeur False.

N'importe laquelle de ces deux bases de données j'utilise, il est toujours Sensible à la casse pour les utilisateurs.

Quelqu'un peut-il expliquer pourquoi ce qui se passe pour que je puisse aller avec ma misérable vie?

Salutations,
Robin Dorbell

Votre question similaire est dupe de LINQ Contient pas sensible à la casse Il a un IndexOf solution. Vous voudrez peut-être essayer que l'on
Donc tu veux dire que le IndexOf solution ne serait pas de dire à entity framework pour récupérer tous les enregistrements avant de les comparer?
Avez-vous lu cette réponse sur les différentes langues? stackoverflow.com/questions/444798/... il implique que vous devez utiliser la classe CultureInfo à la place.
Êtes-vous certain que la recherche est en cours d'exécution sur le serveur? Vérifiez le type de "_collection"? Si c'est IEnumerable<?> la requête s'exécute dans le code C#, pas sur le serveur de base de données (et être sensible à la casse). Si c'est IQueryable<?> puis c'est PEUT-être en cours d'exécution sur le serveur de base de données.
Que peut-être elle. Les collections de type est ICollection<T>.

OriginalL'auteur Robin Dorbell | 2014-08-14