2016-09-16 1 views
1

Angenommen, ich habe eine Datenbank von Khans. Ich kann diese Entity Framework Code verwenden, um einen khan vonGibt es eine einfache Möglichkeit, Akzente in Linq-to-Entities-Abfragen zu behandeln

Namen zu holen
Khan khan=context.Khans.Where(x=>x.Name.Contains("Öge")).Single(); 

Das Problem ist, dass die Nutzer in der Praxis „Oge“ statt „Öge“ eingeben und erhalten keine Streichhölzer bekommen. Gibt es eine einfache Möglichkeit, damit umzugehen, dass Buchstaben mit Akzentzeichen immer als Buchstaben ohne Akzente für Suchen zählen?

fand ich this SO question, die eine Lösung für die Compare Methode hat, aber ich kann nicht diese Abfrage für eine Datenbank zu verwenden scheinen:

string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreNonSpace); 
+1

Eine Strategie wäre, die Menge der Varianten zu erstellen und dann alle in der Abfrage zu verwenden. – juharr

+1

Mögliches Duplikat von [LINQ Wo Akzentuierung und Fall ignorieren] (http://stackoverflow.com/questions/7418624/linq-where-ignore-accentuation-and-case) –

+0

@ Cᴏʀʏ thiscomment sollte Teil Ihrer Antwort sein, auch mit Juharrs Methode hat das OP jetzt 3 mögliche Antworten auf seine Frage. Er kann wählen, was er am besten findet. –

Antwort

3

Sie müssen möglicherweise die Sortierung des Feldes in der Datenbanktabelle ändern Fall- und Akzent-insensitive zu sein, um nach LINQ .Contains() wie mit Standardverfahren zu arbeiten:

ALTER TABLE Khans ALTER COLUMN Name [varchar](100) COLLATE SQL_Latin1_General_CP1_CI_AI 

die „CI“ am Ende des Kollatierungsnamen bedeutet „Groß- und Kleinschreibung“ und „AI“ bedeutet „accent -unempfindlich."

Verwandte Themen