Ich glaube, eine solche Zusammenstellung wird in den aktuellen Versionen von SQLite nicht vorgesehen. Daher scheint es der vernünftigste Plan zu sein, die Sortierung aus der Abfrage zu entfernen und stattdessen danach in reinem .Net zu sortieren, wo Sie volle Kontrolle und Zugriff auf Konstrukte wie die Kulturinformationen des Threads haben.
Da beide im selben Prozess ablaufen, sollte dies keinen großen Unterschied in der Leistung ausmachen, es sei denn, Ihre Datenmenge ist sehr groß.
SQLite 3 erlaubt benutzerdefinierte Sortierfunktionen, die in SQLite.Net als .net-Funktionen ausgeführt werden können, aber der Aufwand für das Zurück- und Heraufrufen über die verwaltete/nicht verwaltete Grenze ist beträchtlich. Hier ist eine persons attempts to do it in c++. Es sei denn, Sie haben Zugriff auf jemand anderen gut getestete und stabile Unicode-Kultur-sensitive Sortierung in C++ Ich schlage vor, bei der einfachen Sortierung nach dem Ansatz wo möglich zu bleiben.
Natürlich, wenn die Leistung der benutzerdefinierten Sortierung mehr als genug für Ihre derzeitigen Bedürfnisse ist, dann gehen Sie damit.
[SQLiteFunction(Name = "CULTURESORT", FuncType = FunctionType.Collation)]
class CultureSort : SQLiteFunction
{
public override int Compare(string param1, string param2)
{
return String.Compare(
param1,param2, CultureInfo.CurrentCulture, CompareOptions.IgnoreCase)
);
}
}
Post Script, wenn Sie Lust bekommen Phantasie: Es ist ein gesegnetes Build von SQLite die integrates the ICU library für ‚richtige‘ Unicode-Unterstützung bei der Bestellung/wie/oben/unten, aber Sie möchten, dass in den SQLite-Code integrieren müssen wird als Hintergrund für den .Net-Wrapper verwendet. Das ist nicht einfach.
toooo langsam) ganze Reihe Umwandlung direkt mit der ersten paar Zeichen zu verwenden –
Haben Sie es versuchen? Die Konvertierung erfolgt auf SQL-Seite. – Rover
Ja. Ich glaube nicht, dass MSIL auf beiden Seiten unterschiedlich interpretiert wird. –