Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung in LINQ to Entities
Im Gegensatz zu LINQ to Objects unterstützt LINQ to Entities Vergleiche unter Beachtung der Groß-/Kleinschreibung nicht direkt. Dies liegt daran, dass LINQ to Entities Lambda-Ausdrücke in SQL-Anweisungen umwandelt, die letztendlich von der Datenbank (z. B. SQL Server) ausgeführt werden. Standardmäßig verwendet SQL Server eine Sortierung ohne Berücksichtigung der Groß-/Kleinschreibung, was bedeutet, dass die folgende Abfrage unabhängig von der Groß-/Kleinschreibung immer eine Übereinstimmung zurückgibt:
<code>context.Thingies.First(t => t.Name == "ThingamaBob");</code>
Serverseitige Lösung
Um den Vergleich zwischen Groß- und Kleinschreibung in LINQ to Entities zu implementieren, muss die Datenbanksortierung der relevanten Spalten geändert werden. Beispielsweise ändert die folgende SQL-Anweisung die Sortierung der Spalte „Name“ in der Tabelle „Thingies“ so, dass die Groß-/Kleinschreibung beachtet wird:
<code>ALTER TABLE Thingies ALTER COLUMN Name VARCHAR(25) COLLATE Latin1_General_CS_AS;</code>
Kundenlösung
Obwohl nicht ideal, gibt es eine clientseitige Problemumgehung, die sowohl LINQ to Entities als auch LINQ to Objects nutzt:
<code>var result = context.Thingies.Where(t => t.Name == "ThingamaBob") .AsEnumerable() .First(t => t.Name == "ThingamaBob");</code>
Bei diesem Ansatz wandelt AsEnumerable()
die Abfrage in eine speicherinterne Aufzählung um, sodass Sie mit Where()
einen sekundären Vergleich unter Berücksichtigung der Groß- und Kleinschreibung durchführen können. Diese Problemumgehung führt jedoch zu zusätzlichen Abfragen der Datenbank.
Das obige ist der detaillierte Inhalt vonWie kann ich in LINQ to Entities Vergleiche unter Berücksichtigung der Groß-/Kleinschreibung durchführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!